123 assert(dimensions >= 0 && dimensions <= 2);
130 obj->Dimensions = dimensions;
135 obj->MinMagThresh = 0.0F;
136 obj->Palette[0] = 255;
137 obj->Palette[1] = 255;
138 obj->Palette[2] = 255;
139 obj->Palette[3] = 255;
140 obj->PaletteSize = 1;
220 if (!
t->Image[0] || !
t->Image[0]->Data) {
234 if (!
t->Image[
i]->Data) {
238 if (
t->Image[
i]->Format !=
t->Image[0]->Format) {
242 if (
t->Image[
i]->Border !=
t->Image[0]->Border) {
250 if (
t->Dimensions==1) {
261 if (!
t->Image[
i]->Data) {
265 if (
t->Image[
i]->Format !=
t->Image[0]->Format) {
269 if (
t->Image[
i]->Border !=
t->Image[0]->Border) {
273 if (
t->Image[
i]->Width2 !=
width ) {
282 else if (
t->Dimensions==2) {
297 if (
t->Image[
i]->Width2 !=
width) {
301 if (
t->Image[
i]->Height2 !=
height) {
371 if (
ctx->Texture.Current1D==
t) {
373 ctx->Texture.Current1D =
ctx->Shared->Default1D;
377 else if (
ctx->Texture.Current2D==
t) {
379 ctx->Texture.Current2D =
ctx->Shared->Default2D;
385 if (
ctx->Driver.DeleteTexture) {
386 (*
ctx->Driver.DeleteTexture)(
ctx,
t );
389 if (
t->RefCount==0) {
415 oldTexObj =
ctx->Texture.Current1D;
416 targetPointer = &
ctx->Texture.Current1D;
417 targetDimensions = 1;
420 oldTexObj =
ctx->Texture.Current2D;
421 targetPointer = &
ctx->Texture.Current2D;
422 targetDimensions = 2;
433 newTexObj =
ctx->Shared->Default1D;
436 newTexObj =
ctx->Shared->Default2D;
451 else if (newTexObj->
Dimensions != targetDimensions) {
465 *targetPointer = newTexObj;
468 if (*targetPointer != oldTexObj && oldTexObj->
Name>0) {
474 if (newTexObj->
Name>0) {
484 || (oldTexObj->
Image[0] && newTexObj->
Image[0] &&
485 (oldTexObj->
Image[0]->Format!=newTexObj->
Image[0]->Format))
493 if (oldTexObj==
ctx->Texture.Current) {
494 ctx->Texture.Current = newTexObj;
501 if (
ctx->Driver.BindTexture) {
#define MAX_TEXTURE_LEVELS
void gl_problem(const GLcontext *ctx, const char *s)
void gl_error(GLcontext *ctx, GLenum error, const char *s)
void HashRemove(struct HashTable *table, GLuint key)
void * HashLookup(const struct HashTable *table, GLuint key)
GLuint HashFindFreeKeyBlock(const struct HashTable *table, GLuint numKeys)
void HashInsert(struct HashTable *table, GLuint key, void *data)
#define GL_INVALID_OPERATION
#define GL_NEAREST_MIPMAP_LINEAR
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
const GLuint GLboolean * residences
const GLuint const GLclampf * priorities
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
#define INSIDE_BEGIN_END(CTX)
struct HashTable * TexObjects
struct gl_texture_object * TexObjectList
struct gl_texture_object * Next
struct gl_texture_image * Image[MAX_TEXTURE_LEVELS]
void gl_free_texture_image(struct gl_texture_image *teximage)
void gl_DeleteTextures(GLcontext *ctx, GLsizei n, const GLuint *texName)
GLboolean gl_AreTexturesResident(GLcontext *ctx, GLsizei n, const GLuint *texName, GLboolean *residences)
void gl_PrioritizeTextures(GLcontext *ctx, GLsizei n, const GLuint *texName, const GLclampf *priorities)
void gl_test_texture_object_completeness(struct gl_texture_object *t)
GLboolean gl_IsTexture(GLcontext *ctx, GLuint texture)
void gl_BindTexture(GLcontext *ctx, GLenum target, GLuint texName)
void gl_GenTextures(GLcontext *ctx, GLsizei n, GLuint *texName)
void gl_free_texture_object(struct gl_shared_state *shared, struct gl_texture_object *t)
struct gl_texture_object * gl_alloc_texture_object(struct gl_shared_state *shared, GLuint name, GLuint dimensions)
#define CLAMP(f, min, max)