e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* Copyright (c) 2001, Stanford University
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * All rights reserved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * See the file LICENSE.txt for information on redistributing this software.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifndef CR_STATE_ATTRIB_H
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define CR_STATE_ATTRIB_H
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "state/cr_limits.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "state/cr_statetypes.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <iprt/cdefs.h>
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef __cplusplus
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncextern "C" {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRbitvalue dirty[CR_MAX_BITARRAY];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRAttribBits;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf accumClearValue;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRAccumBufferStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean blend;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean alphaTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean logicOp;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean indexLogicOp;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean dither;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum alphaTestFunc;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat alphaTestRef;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum blendSrcRGB;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum blendDstRGB;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum blendSrcA;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum blendDstA;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf blendColor;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum blendEquation;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum logicOpMode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum drawBuffer;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint indexWriteMask;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorb colorWriteMask;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf colorClearValue;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat indexClearValue;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRColorBufferStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean rasterValid;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat attrib[CR_MAX_VERTEX_ATTRIBS][4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat rasterAttrib[CR_MAX_VERTEX_ATTRIBS][4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean edgeFlag;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat colorIndex;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRCurrentStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean depthTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean depthMask;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum depthFunc;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLdefault depthClearValue;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRDepthBufferStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean alphaTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean autoNormal;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean blend;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean *clip;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean colorMaterial;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean cullFace;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean depthTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean dither;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean fog;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean *light;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lighting;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lineSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lineStipple;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean logicOp;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean indexLogicOp;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean map1[GLEVAL_TOT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean map2[GLEVAL_TOT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean normalize;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean pointSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_ARB_point_sprite
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean pointSprite;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean coordReplacement[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonOffsetLine;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonOffsetFill;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonOffsetPoint;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonStipple;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_OPENGL_VERSION_1_2
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean rescaleNormals;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean scissorTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean stencilTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean texture1D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean texture2D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean texture3D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_ARB_texture_cube_map
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean textureCubeMap[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_NV_texture_rectangle
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean textureRect[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean textureGenS[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean textureGenT[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean textureGenR[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean textureGenQ[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CREnableStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enable1D[GLEVAL_TOT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enable2D[GLEVAL_TOT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean autoNormal;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CREvaluator1D eval1D[GLEVAL_TOT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CREvaluator2D eval2D[GLEVAL_TOT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint un1D;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat u11D, u21D;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint un2D;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint vn2D;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat u12D, u22D;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat v12D, v22D;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CREvalStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lighting;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean colorMaterial;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum shadeModel;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum colorMaterialMode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum colorMaterialFace;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf ambient[2];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf diffuse[2];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf specular[2];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf emission[2];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat shininess[2];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint indexes[2][3];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf lightModelAmbient;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lightModelLocalViewer;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lightModelTwoSide;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if defined(CR_EXT_separate_specular_color) || defined(CR_OPENGL_VERSION_1_2)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum lightModelColorControlEXT;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRLight *light;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRLightingStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf color;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint index;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat density;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat start;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat end;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint mode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enable;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRFogStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum perspectiveCorrection;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum pointSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum lineSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum polygonSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum fog;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_EXT_clip_volume_hint
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum clipVolumeClipping;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_ARB_texture_compression
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum textureCompression;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_SGIS_generate_mipmap
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum generateMipmap;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRHintStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lineSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean lineStipple;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat width;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLushort pattern;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint repeat;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRLineStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLuint base;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRListStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean mapColor;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean mapStencil;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint indexShift;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint indexOffset;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf scale;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat depthScale;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf bias;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat depthBias;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat xZoom;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat yZoom;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum readBuffer;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRPixelModeStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean pointSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat pointSize;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if CR_ARB_point_sprite
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean pointSprite;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean coordReplacement[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRPointStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonSmooth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonOffsetFill;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonOffsetLine;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonOffsetPoint;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean polygonStipple;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean cullFace;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat offsetFactor;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat offsetUnits;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum cullFaceMode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum frontFace;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum frontMode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum backMode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRPolygonStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint pattern[32];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRPolygonStippleStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean scissorTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint scissorX;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint scissorY;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLsizei scissorW;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLsizei scissorH;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRScissorStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean stencilTest;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum func;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint mask;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint ref;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum fail;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum passDepthFail;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum passDepthPass;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint clearValue;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint writeMask;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync} CRStencilBufferStack_v_33;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync
79664e45c3d7123821dcd5de01991c6de96b8794vboxsynctypedef struct {
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync /* true if stencil test is enabled */
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync GLboolean stencilTest;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync /* true if GL_EXT_stencil_two_side is enabled (glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)) */
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync GLboolean stencilTwoSideEXT;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync /* GL_FRONT or GL_BACK */
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync GLenum activeStencilFace;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync GLint clearValue;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync GLint writeMask;
79664e45c3d7123821dcd5de01991c6de96b8794vboxsync CRStencilBufferState buffers[CRSTATE_STENCIL_BUFFER_COUNT];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRStencilBufferStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if 111
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLuint curTextureUnit;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureUnit unit[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enabled1D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enabled2D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enabled3D[CR_MAX_TEXTURE_UNITS];
b862944342504d1b9dddd6348d1a9048c72ba418vboxsync# ifdef CR_ARB_texture_cube_map
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean enabledCubeMap[CR_MAX_TEXTURE_UNITS];
b862944342504d1b9dddd6348d1a9048c72ba418vboxsync# endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureObj *current1D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureObj *current2D[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureObj *current3D[CR_MAX_TEXTURE_UNITS];
b862944342504d1b9dddd6348d1a9048c72ba418vboxsync# ifdef CR_ARB_texture_cube_map
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureObj *currentCubeMap[CR_MAX_TEXTURE_UNITS];
b862944342504d1b9dddd6348d1a9048c72ba418vboxsync# endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf borderColor[4]; /* 4 = 1D, 2D, 3D and cube map textures */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum minFilter[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum magFilter[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum wrapS[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum wrapT[4];
b862944342504d1b9dddd6348d1a9048c72ba418vboxsync# ifdef CR_OPENGL_VERSION_1_2
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum wrapR[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat priority[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat minLod[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLfloat maxLod[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint baseLevel[4];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint maxLevel[4];
b862944342504d1b9dddd6348d1a9048c72ba418vboxsync# endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLuint curTextureUnit;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum envMode[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLcolorf envColor[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLtexcoordb textureGen[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf objSCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf objTCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf objRCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf objQCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf eyeSCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf eyeTCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf eyeRCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectorf eyeQCoeff[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLtexcoorde gen[CR_MAX_TEXTURE_UNITS];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRTextureStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLenum matrixMode;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLvectord *clipPlane;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean *clip;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean normalize;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef CR_OPENGL_VERSION_1_2
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLboolean rescaleNormals;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRTransformStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint viewportX;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint viewportY;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint viewportW;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint viewportH;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLclampd nearClip;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLclampd farClip;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRViewportStack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef struct {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint attribStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRbitvalue pushMaskStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint accumBufferStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRAccumBufferStack accumBufferStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint colorBufferStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRColorBufferStack colorBufferStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint currentStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRCurrentStack currentStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint depthBufferStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRDepthBufferStack depthBufferStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint enableStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CREnableStack enableStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint evalStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CREvalStack evalStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint fogStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRFogStack fogStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint hintStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRHintStack hintStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint lightingStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRLightingStack lightingStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint lineStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRLineStack lineStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint listStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRListStack listStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint pixelModeStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRPixelModeStack pixelModeStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint pointStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRPointStack pointStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint polygonStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRPolygonStack polygonStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint polygonStippleStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRPolygonStippleStack polygonStippleStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint scissorStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRScissorStack scissorStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint stencilBufferStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRStencilBufferStack stencilBufferStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint textureStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTextureStack textureStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint transformStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRTransformStack transformStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync GLint viewportStackDepth;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRViewportStack viewportStack[CR_MAX_ATTRIB_STACK_DEPTH];
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync} CRAttribState;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crStateAttribInit(CRAttribState *a);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* No diff! */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crStateAttribSwitch(CRAttribBits *bb, CRbitvalue *bitID,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRContext *fromCtx, CRContext *toCtx);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifdef __cplusplus
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif /* CR_STATE_ATTRIB_H */