cogl-texture-2d-sliced: Use the other backends for the slices

Instead of directly manipulating GL textures itself,
CoglTexture2DSliced now works in terms of CoglHandles. It creates the
texture slices using cogl_texture_new_with_size which should always
end up creating a CoglTexture2D because the size should fit. This
allows us to avoid replicating some code such as the first pixel
mipmap tracking and it better enforces the separation that each
texture backend is the only place that contains code dealing with each
texture target.
This commit is contained in:
Neil Roberts 2010-10-04 14:34:24 +01:00
parent 61f2f1c024
commit d5634e37a2
2 changed files with 454 additions and 653 deletions

View File

@ -38,29 +38,11 @@ struct _CoglTexture2DSliced
CoglTexture _parent; CoglTexture _parent;
GArray *slice_x_spans; GArray *slice_x_spans;
GArray *slice_y_spans; GArray *slice_y_spans;
GArray *slice_gl_handles; GArray *slice_textures;
int max_waste; int max_waste;
/* The internal format of the GL texture represented as a
CoglPixelFormat */
CoglPixelFormat format;
/* The internal format of the GL texture represented as a GL enum */
GLenum gl_format;
GLenum gl_target;
int width; int width;
int height; int height;
GLenum min_filter;
GLenum mag_filter;
gboolean is_foreign;
GLenum wrap_mode_s;
GLenum wrap_mode_t;
gboolean auto_mipmap;
gboolean mipmaps_dirty;
/* This holds a copy of the first pixel in each slice. It is only
used to force an automatic update of the mipmaps when
glGenerateMipmap is not available. */
CoglTexturePixel *first_pixels;
}; };
GQuark GQuark

File diff suppressed because it is too large Load Diff