641 lines
24 KiB
C
641 lines
24 KiB
C
#ifndef _texture_h_
|
|
#define _texture_h_
|
|
|
|
/*
|
|
** Copyright 1991,1992, Silicon Graphics, Inc.
|
|
** All Rights Reserved.
|
|
**
|
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
|
|
** the contents of this file may not be disclosed to third parties, copied or
|
|
** duplicated in any form, in whole or in part, without the prior written
|
|
** permission of Silicon Graphics, Inc.
|
|
**
|
|
** RESTRICTED RIGHTS LEGEND:
|
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
|
** rights reserved under the Copyright Laws of the United States.
|
|
**
|
|
** $Revision: 1.11 $
|
|
** $Date: 1995/01/25 18:07:23 $
|
|
*/
|
|
#include "types.h"
|
|
|
|
#define __GL_TEX_TARGET_INDEX_1D 2
|
|
#define __GL_TEX_TARGET_INDEX_2D 3
|
|
|
|
// This doesn't correspond to an actual default texture, it's just a special
|
|
// name for the static DDraw texobj.
|
|
#define __GL_TEX_TARGET_INDEX_DDRAW 4
|
|
|
|
// Texobj name for the DDraw texobj. This can't be zero because it
|
|
// must be distinct from a default texture name. Technically that's
|
|
// all that matters, but in reality it's nice to use a number that's
|
|
// uncommon as a normal texture name because it makes it easy to
|
|
// identify the DDraw texture object vs. a normal texture object.
|
|
// This difference can never be guaranteed, though, so no code should
|
|
// ever be written that assumes name matching is good enough to
|
|
// identify the DDraw texture object.
|
|
#define __GL_TEX_DDRAW 0xdddddddd
|
|
|
|
/*
|
|
** Client state set with glTexGen.
|
|
**
|
|
** This structure is shared with MCD as MCDTEXTURECOORDGENERATION.
|
|
*/
|
|
typedef struct __GLtextureCoordStateRec {
|
|
/* How coordinates are being generated */
|
|
GLenum mode;
|
|
|
|
/* eye plane set via API, stored for MCD */
|
|
__GLcoord eyePlaneSet;
|
|
|
|
/* eye plane equation (used iff mode == GL_EYE_LINEAR) */
|
|
__GLcoord eyePlaneEquation;
|
|
|
|
/* object plane equation (used iff mode == GL_OBJECT_LINEAR) */
|
|
__GLcoord objectPlaneEquation;
|
|
} __GLtextureCoordState;
|
|
|
|
/*
|
|
** Client state set with glTexEnv
|
|
*/
|
|
typedef struct __GLtextureEnvStateRec {
|
|
/* environment "blend" function */
|
|
GLenum mode;
|
|
|
|
/* environment color */
|
|
__GLcolor color;
|
|
} __GLtextureEnvState;
|
|
|
|
//!!! Don't change this structure without changing MCDTEXTURESTATE !!!
|
|
|
|
/*
|
|
** Client state set with glTexParameter
|
|
*/
|
|
typedef struct __GLtextureParamStateRec {
|
|
/* S & T wrap modes */
|
|
GLenum sWrapMode;
|
|
GLenum tWrapMode;
|
|
|
|
/* min and mag filter */
|
|
GLenum minFilter;
|
|
GLenum magFilter;
|
|
|
|
/* border color */
|
|
__GLcolor borderColor; /* Unscaled! */
|
|
} __GLtextureParamState;
|
|
|
|
/*
|
|
** Stackable texture object state.
|
|
*/
|
|
typedef struct __GLtextureObjectStateRec {
|
|
GLuint name; /* name of the texture */
|
|
GLfloat priority; /* priority of the texture object */
|
|
} __GLtextureObjectState;
|
|
|
|
/*
|
|
** Client state per texture map per dimension.
|
|
*/
|
|
typedef struct __GLperTextureStateRec {
|
|
/*
|
|
** Texture parameter state (set with glTexParameter).
|
|
*/
|
|
__GLtextureParamState params;
|
|
|
|
/*
|
|
** Texture object bindings and priorities.
|
|
*/
|
|
__GLtextureObjectState texobjs;
|
|
} __GLperTextureState;
|
|
|
|
/*
|
|
** Stackable client texture state. This does not include
|
|
** the mipmaps, or level dependent state. Only state which is
|
|
** stackable via glPushAttrib/glPopAttrib is here. The rest of the
|
|
** state is in the machine structure below.
|
|
*/
|
|
typedef struct __GLtextureStateRec {
|
|
/* Per coordinate texture state (set with glTexGen) */
|
|
__GLtextureCoordState s;
|
|
__GLtextureCoordState t;
|
|
__GLtextureCoordState r;
|
|
__GLtextureCoordState q;
|
|
|
|
/* Per texture state */
|
|
__GLperTextureState *texture;
|
|
|
|
/* Per texture environment state */
|
|
__GLtextureEnvState *env;
|
|
} __GLtextureState;
|
|
|
|
/************************************************************************/
|
|
|
|
typedef __GLfloat __GLtextureBuffer;
|
|
|
|
typedef struct __GLtexelRec {
|
|
__GLfloat r, g, b;
|
|
__GLfloat luminance;
|
|
__GLfloat alpha;
|
|
__GLfloat intensity;
|
|
} __GLtexel;
|
|
|
|
/************************************************************************/
|
|
|
|
typedef struct __GLmipMapLevelRec __GLmipMapLevel;
|
|
typedef struct __GLtextureRec __GLtexture;
|
|
|
|
//!!! Don't change this structure without changing MCDMIPMAPLEVEL !!!
|
|
|
|
struct __GLmipMapLevelRec {
|
|
__GLtextureBuffer *buffer;
|
|
/* Image dimensions, including border */
|
|
GLint width, height;
|
|
|
|
/* Image dimensions, doesn't include border */
|
|
GLint width2, height2;
|
|
__GLfloat width2f, height2f;
|
|
|
|
/* log2 of width2 & height2 */
|
|
GLint widthLog2, heightLog2;
|
|
|
|
/* Border size */
|
|
GLint border;
|
|
|
|
/* Requested internal format */
|
|
GLint requestedFormat;
|
|
|
|
/* Base internal format */
|
|
GLint baseFormat;
|
|
|
|
/* Actual internal format */
|
|
GLint internalFormat;
|
|
|
|
/* Component resolution */
|
|
GLint redSize;
|
|
GLint greenSize;
|
|
GLint blueSize;
|
|
GLint alphaSize;
|
|
GLint luminanceSize;
|
|
GLint intensitySize;
|
|
|
|
/* Extract function for this mipmap level */
|
|
void (FASTCALL *extract)(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *result);
|
|
};
|
|
|
|
//!!! Don't change this structure without changing MCDTEXTUREDATA !!!
|
|
|
|
struct __GLtextureRec {
|
|
/* Back pointer to context */
|
|
__GLcontext *gc;
|
|
|
|
/* Copy of parameter state */
|
|
// This is the start of MCDTEXTUREDATA:
|
|
__GLtextureParamState params;
|
|
|
|
/* Copy of texure object stackable state */
|
|
__GLtextureObjectState texobjs;
|
|
|
|
/* Level information */
|
|
__GLmipMapLevel *level;
|
|
|
|
/* Dimension of this texture (1 or 2) */
|
|
GLint dim;
|
|
|
|
#ifdef GL_EXT_paletted_texture
|
|
// The palette is the same for all mipmap levels so it
|
|
// is a texture field rather than a mipmap field
|
|
GLsizei paletteSize;
|
|
RGBQUAD *paletteData;
|
|
|
|
// Type of palette data, determined by glColorTableEXT
|
|
// and applied to all mipmap levels
|
|
GLenum paletteBaseFormat;
|
|
// internalFormat given in glColorTableEXT call, for
|
|
// GL_COLOR_TABLE_FORMAT requests
|
|
GLenum paletteRequestedFormat;
|
|
#endif
|
|
|
|
/* maximum( log2(level[0].width2), log2(level[0].height2) ) */
|
|
GLint p;
|
|
|
|
/* Min/Mag switchover point */
|
|
__GLfloat c;
|
|
|
|
/* Create a new mipmap level for this texture */
|
|
__GLtextureBuffer * (FASTCALL *createLevel)(__GLcontext *gc, __GLtexture *tex,
|
|
GLint lod, GLint components,
|
|
GLsizei w, GLsizei h, GLint border,
|
|
GLint dim);
|
|
|
|
/* Texturing function for this texture */
|
|
void (*textureFunc)(__GLcontext *gc, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLfloat rho);
|
|
|
|
/* Apply current environment function to fragment */
|
|
void (FASTCALL *env)(__GLcontext *gc, __GLcolor *color, __GLtexel *texel);
|
|
|
|
/* Magnification routine for this texture */
|
|
void (FASTCALL *magnify)(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
|
|
/* Minification routine for this texture */
|
|
void (FASTCALL *minnify)(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
|
|
/* Linear filter for this texture */
|
|
void (FASTCALL *linear)(__GLcontext *gc, __GLtexture *tex,
|
|
__GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
|
|
/* Nearest filter for this texture */
|
|
void (FASTCALL *nearest)(__GLcontext *gc, __GLtexture *tex,
|
|
__GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
|
|
void *pvUser; // user-defined expansion for caching, etc.
|
|
DWORD textureKey; // driver-private key for MCD-accelerated textures
|
|
|
|
// The palette can be subdivided into multiple sections. paletteSize
|
|
// and paletteData point to a single section, while the Total versions
|
|
// contain information about the entire palette.
|
|
GLsizei paletteTotalSize;
|
|
RGBQUAD *paletteTotalData;
|
|
|
|
// Number of subdivisions in total palette minus one
|
|
GLsizei paletteDivision;
|
|
|
|
// Shift to go from subdivision number to palette entry
|
|
GLsizei paletteDivShift;
|
|
};
|
|
|
|
typedef struct __GLperTextureMachineRec {
|
|
__GLtexture map;
|
|
} __GLperTextureMachine;
|
|
|
|
|
|
/*
|
|
** Texture object structure.
|
|
** refcount field MUST be first in the structure.
|
|
*/
|
|
typedef struct __GLtextureObjectRec {
|
|
GLint refcount; /* reference count: create with 1; delete when 0 */
|
|
/* refcount MUST be first in this structure */
|
|
GLenum targetIndex; /* index of the target it's bound to */
|
|
GLboolean resident; /* residence status of the texture object */
|
|
__GLperTextureMachine texture; /* actual texture data */
|
|
struct __GLtextureObjectRec *lowerPriority; /* Priority list link */
|
|
struct __GLtextureObjectRec *higherPriority; /* Priority list link */
|
|
HANDLE loadKey; /* Texture memory load key for unloading */
|
|
} __GLtextureObject;
|
|
|
|
typedef struct __GLsharedTextureStateRec {
|
|
/* Stores pointers to texture objects, retrieved by name */
|
|
__GLnamesArray *namesArray;
|
|
|
|
/* List of all texture objects sorted by priority */
|
|
__GLtextureObject *priorityListHighest;
|
|
__GLtextureObject *priorityListLowest;
|
|
} __GLsharedTextureState;
|
|
|
|
/*
|
|
** DDraw texture flags.
|
|
*/
|
|
|
|
/* Whether the texture's format is supported by generic or not */
|
|
#define DDTEX_GENERIC_FORMAT 0x00000001
|
|
|
|
/* Whether all texture surfaces are in video memory or not */
|
|
#define DDTEX_VIDEO_MEMORY 0x00000002
|
|
|
|
typedef struct ___GLddrawTexture {
|
|
/* If levels is greater than zero, a DirectDraw texture is current */
|
|
GLint levels;
|
|
|
|
/* Level-zero surface with cached description */
|
|
GLDDSURF gdds;
|
|
|
|
/* Storage space for DirectDraw texture definitions */
|
|
__GLtextureObject texobj;
|
|
|
|
/* levels surface pointers */
|
|
LPDIRECTDRAWSURFACE *pdds;
|
|
|
|
GLuint flags;
|
|
} __GLddrawTexture;
|
|
|
|
typedef struct __GLtextureMachineRec {
|
|
__GLperTextureMachine **texture;
|
|
|
|
/* Array of ptrs to the currently bound texture objects. */
|
|
__GLtextureObject **boundTextures;
|
|
|
|
/* Array of dummy texture objects for the default textures */
|
|
__GLtextureObject *defaultTextures;
|
|
|
|
#ifdef GL_WIN_multiple_textures
|
|
/* Current texture index */
|
|
GLuint texIndex;
|
|
#endif // GL_WIN_multiple_textures
|
|
|
|
/* Current enabled texture */
|
|
__GLtexture *currentTexture;
|
|
|
|
/* Current DirectDraw texture */
|
|
__GLddrawTexture ddtex;
|
|
|
|
/* The OR of all texture enable bits */
|
|
GLboolean textureEnabled;
|
|
|
|
/* State that can be shared between contexts */
|
|
__GLsharedTextureState *shared;
|
|
} __GLtextureMachine;
|
|
|
|
/************************************************************************/
|
|
|
|
/* Check for texture consistency before enabling texturing */
|
|
extern GLboolean FASTCALL __glIsTextureConsistent(__GLcontext *gc, GLenum texture);
|
|
|
|
/* Fragment texturing routines */
|
|
extern void __glFastTextureFragment(__GLcontext *gc, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLfloat rho);
|
|
extern void __glTextureFragment(__GLcontext *gc, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLfloat rho);
|
|
extern void __glMipMapFragment(__GLcontext *gc, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLfloat rho);
|
|
|
|
/* Texturing routines */
|
|
extern void FASTCALL __glLinearFilter(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
extern void FASTCALL __glNearestFilter(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
extern void FASTCALL __glNMNFilter(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
extern void FASTCALL __glLMNFilter(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
extern void FASTCALL __glNMLFilter(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
extern void FASTCALL __glLMLFilter(__GLcontext *gc, __GLtexture *tex, __GLfloat lod,
|
|
__GLcolor *color, __GLfloat s, __GLfloat t,
|
|
__GLtexel *result);
|
|
|
|
/* Filter routines */
|
|
extern void FASTCALL __glLinearFilter1(__GLcontext *gc, __GLtexture *tex,
|
|
__GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
extern void FASTCALL __glLinearFilter2(__GLcontext *gc, __GLtexture *tex,
|
|
__GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
extern void FASTCALL __glNearestFilter1(__GLcontext *gc, __GLtexture *tex,
|
|
__GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
extern void FASTCALL __glNearestFilter2(__GLcontext *gc, __GLtexture *tex,
|
|
__GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
|
|
extern void FASTCALL __glLinearFilter2_BGR8Repeat(__GLcontext *gc,
|
|
__GLtexture *tex, __GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
extern void FASTCALL __glLinearFilter2_BGRA8Repeat(__GLcontext *gc,
|
|
__GLtexture *tex, __GLmipMapLevel *lp, __GLcolor *color,
|
|
__GLfloat s, __GLfloat t, __GLtexel *result);
|
|
|
|
/* Texture environment functions */
|
|
extern void FASTCALL __glTextureModulateL(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureModulateLA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureModulateRGB(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureModulateRGBA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureModulateA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureModulateI(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
|
|
extern void FASTCALL __glTextureDecalRGB(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureDecalRGBA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
|
|
extern void FASTCALL __glTextureBlendL(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureBlendLA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureBlendRGB(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureBlendRGBA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureBlendA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureBlendI(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
|
|
extern void FASTCALL __glTextureReplaceL(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureReplaceLA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureReplaceRGB(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureReplaceRGBA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureReplaceA(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
extern void FASTCALL __glTextureReplaceI(__GLcontext *gc, __GLcolor *color,
|
|
__GLtexel *tx);
|
|
|
|
/* Extract a texel from a texture level (no border) */
|
|
extern void FASTCALL __glExtractTexelL(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelLA(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGB(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGBA(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelA(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelI(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGB8(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGBA8(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelBGR8(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelBGRA8(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
|
|
/* Extract a texel from a texture level (the texture has a border) */
|
|
extern void FASTCALL __glExtractTexelL_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelLA_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGB_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGBA_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelA_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelI_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGB8_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelRGBA8_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
#ifdef GL_EXT_paletted_texture
|
|
extern void FASTCALL __glExtractTexelPI8BGR_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI8BGR(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI16BGR_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI16BGR(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI8BGRA_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI8BGRA(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI16BGRA_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
extern void FASTCALL __glExtractTexelPI16BGRA(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *res);
|
|
#endif
|
|
|
|
#ifdef GL_EXT_bgra
|
|
void FASTCALL __glExtractTexelBGR8_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *result);
|
|
void FASTCALL __glExtractTexelBGRA8_B(__GLmipMapLevel *level, __GLtexture *tex,
|
|
GLint row, GLint col, __GLtexel *result);
|
|
#endif // GL_EXT_bgra
|
|
|
|
/* Texture init */
|
|
extern void FASTCALL __glInitTextureUnpack(__GLcontext *gc, __GLpixelSpanInfo *, GLint,
|
|
GLint, GLenum, GLenum, const GLvoid *,
|
|
GLenum, GLboolean);
|
|
extern void FASTCALL __glInitImagePack(__GLcontext *gc, __GLpixelSpanInfo *spanInfo,
|
|
GLint width, GLint height, GLenum format, GLenum type,
|
|
const GLvoid *buf);
|
|
|
|
/* List execution texture image code */
|
|
extern void __gllei_TexImage1D(__GLcontext *gc, GLenum target, GLint lod,
|
|
GLint components, GLint length,
|
|
GLint border, GLenum format, GLenum type,
|
|
const GLubyte *image);
|
|
extern void __gllei_TexImage2D(__GLcontext *gc, GLenum target, GLint lod,
|
|
GLint components, GLint w, GLint h,
|
|
GLint border, GLenum format, GLenum type,
|
|
const GLubyte *image);
|
|
|
|
extern void __gllei_TexSubImage1D(__GLcontext *gc, GLenum target, GLint lod,
|
|
GLint xoffset, GLint length,
|
|
GLenum format, GLenum type,
|
|
const GLubyte *image);
|
|
extern void __gllei_TexSubImage2D(__GLcontext *gc, GLenum target, GLint lod,
|
|
GLint xoffset, GLint yoffset,
|
|
GLsizei w, GLsizei h,
|
|
GLenum format, GLenum type,
|
|
const GLubyte *image);
|
|
|
|
/* Rho calculation routines */
|
|
extern __GLfloat __glComputeLineRho(__GLcontext *gc,
|
|
__GLfloat s, __GLfloat t, __GLfloat wInv);
|
|
extern __GLfloat __glNopLineRho(__GLcontext *gc,
|
|
__GLfloat s, __GLfloat t, __GLfloat wInv);
|
|
extern __GLfloat __glComputePolygonRho(__GLcontext *gc, const __GLshade *sh,
|
|
__GLfloat s, __GLfloat t,
|
|
__GLfloat winv);
|
|
extern __GLfloat __glNopPolygonRho(__GLcontext *gc, const __GLshade *sh,
|
|
__GLfloat s, __GLfloat t, __GLfloat winv);
|
|
|
|
extern __GLtexture *FASTCALL __glCheckTexImage1DArgs(__GLcontext *gc, GLenum target,
|
|
GLint lod, GLint components,
|
|
GLsizei length, GLint border,
|
|
GLenum format, GLenum type);
|
|
|
|
extern __GLtexture *FASTCALL __glCheckTexImage2DArgs(__GLcontext *gc, GLenum target,
|
|
GLint lod, GLint components,
|
|
GLsizei w, GLsizei h, GLint border,
|
|
GLenum format, GLenum type);
|
|
|
|
/* Texture Lookup */
|
|
extern __GLtextureObjectState *FASTCALL __glLookUpTextureTexobjs(__GLcontext *gc,
|
|
GLenum target);
|
|
/* Texture Lookup */
|
|
extern __GLtextureParamState *FASTCALL __glLookUpTextureParams(__GLcontext *gc,
|
|
GLenum target);
|
|
extern __GLtexture *FASTCALL __glLookUpTexture(__GLcontext *gc, GLenum target);
|
|
|
|
extern __GLtextureObject *FASTCALL __glLookUpTextureObject(__GLcontext *gc,
|
|
GLenum target);
|
|
|
|
/* Texture Initialization */
|
|
extern void FASTCALL __glEarlyInitTextureState(__GLcontext *gc);
|
|
|
|
GLboolean FASTCALL __glInitTextureObject(__GLcontext *gc,
|
|
__GLtextureObject *texobj,
|
|
GLuint name, GLuint targetIndex);
|
|
void FASTCALL __glInitTextureMachine(__GLcontext *gc, GLuint targetIndex,
|
|
__GLperTextureMachine *ptm,
|
|
GLboolean allocLevels);
|
|
|
|
/* Bind Texture used by pop or entry point. */
|
|
extern void FASTCALL __glBindTexture(__GLcontext *gc, GLuint targetIndex, GLuint name, GLboolean callGen);
|
|
|
|
#ifdef NT
|
|
extern GLboolean FASTCALL __glCanShareTextures(__GLcontext *gc, __GLcontext *shareMe);
|
|
extern void FASTCALL __glShareTextures(__GLcontext *gc, __GLcontext *shareMe);
|
|
#endif
|
|
|
|
void FASTCALL __glSetPaletteSubdivision(__GLtexture *tex, GLsizei subdiv);
|
|
|
|
#ifdef GL_EXT_paletted_texture
|
|
// Attempt to set the extraction function. If no palette is set,
|
|
// this can't be done
|
|
void __glSetPaletteLevelExtract8(__GLtexture *tex, __GLmipMapLevel *lp,
|
|
GLint border);
|
|
void __glSetPaletteLevelExtract16(__GLtexture *tex, __GLmipMapLevel *lp,
|
|
GLint border);
|
|
#endif // GL_EXT_palette_texture
|
|
|
|
void __glTexPriListRealize(__GLcontext *gc);
|
|
void __glTexPriListAddToList(__GLcontext *gc, __GLtextureObject *texobj);
|
|
void __glTexPriListAdd(__GLcontext *gc, __GLtextureObject *texobj,
|
|
GLboolean realize);
|
|
void __glTexPriListRemoveFromList(__GLcontext *gc, __GLtextureObject *texobj);
|
|
void __glTexPriListRemove(__GLcontext *gc, __GLtextureObject *texobj,
|
|
GLboolean realize);
|
|
void __glTexPriListChangePriority(__GLcontext *gc, __GLtextureObject *texobj,
|
|
GLboolean realize);
|
|
void __glTexPriListLoadSubImage(__GLcontext *gc, GLenum target, GLint lod,
|
|
GLint xoffset, GLint yoffset,
|
|
GLsizei w, GLsizei h);
|
|
void __glTexPriListLoadImage(__GLcontext *gc, GLenum target);
|
|
void __glTexPriListUnloadAll(__GLcontext *gc);
|
|
|
|
__GLtextureBuffer * FASTCALL __glCreateProxyLevel(__GLcontext *gc,
|
|
__GLtexture *tex,
|
|
GLint lod, GLint components,
|
|
GLsizei w, GLsizei h, GLint border,
|
|
GLint dim);
|
|
__GLtextureBuffer * FASTCALL __glCreateLevel(__GLcontext *gc, __GLtexture *tex,
|
|
GLint lod, GLint components,
|
|
GLsizei w, GLsizei h, GLint border,
|
|
GLint dim);
|
|
|
|
GLvoid FASTCALL __glCleanupTexObj(__GLcontext *gc, void *pData);
|
|
|
|
void __glFreeSharedTextureState(__GLcontext *gc);
|
|
|
|
#endif
|