cr_lighting.h revision e0e0c19eefceaf5d4ec40f9466b58a771f50e799
1602N/A/* Copyright (c) 2001, Stanford University
1602N/A * All rights reserved.
1602N/A *
1602N/A * See the file LICENSE.txt for information on redistributing this software.
1602N/A */
1602N/A
1602N/A#ifndef CR_STATE_LIGHTING_H
1602N/A#define CR_STATE_LIGHTING_H
1602N/A
1602N/A#include "state/cr_statetypes.h"
1602N/A
1602N/A#include <iprt/cdefs.h>
1602N/A
1602N/A#ifdef __cplusplus
1602N/Aextern "C" {
1602N/A#endif
1602N/A
1602N/Atypedef struct {
1602N/A CRbitvalue dirty[CR_MAX_BITARRAY];
1602N/A CRbitvalue enable[CR_MAX_BITARRAY];
1602N/A CRbitvalue ambient[CR_MAX_BITARRAY];
1602N/A CRbitvalue diffuse[CR_MAX_BITARRAY];
1602N/A CRbitvalue specular[CR_MAX_BITARRAY];
1602N/A CRbitvalue position[CR_MAX_BITARRAY];
1602N/A CRbitvalue attenuation[CR_MAX_BITARRAY];
1602N/A CRbitvalue spot[CR_MAX_BITARRAY];
1602N/A} CRLightBits;
1602N/A
1602N/Atypedef struct {
1602N/A CRbitvalue dirty[CR_MAX_BITARRAY];
1602N/A CRbitvalue shadeModel[CR_MAX_BITARRAY];
1602N/A CRbitvalue colorMaterial[CR_MAX_BITARRAY];
1602N/A CRbitvalue lightModel[CR_MAX_BITARRAY];
1602N/A CRbitvalue material[CR_MAX_BITARRAY];
1602N/A CRbitvalue enable[CR_MAX_BITARRAY];
1602N/A CRLightBits *light;
1602N/A} CRLightingBits;
1602N/A
1602N/Atypedef struct {
1602N/A GLboolean enable;
1602N/A GLcolorf ambient;
1602N/A GLcolorf diffuse;
1602N/A GLcolorf specular;
1602N/A GLvectorf position;
1602N/A GLvectorf objPosition;
1602N/A GLfloat constantAttenuation;
1602N/A GLfloat linearAttenuation;
1602N/A GLfloat quadraticAttenuation;
1602N/A GLvectorf spotDirection;
1602N/A GLfloat spotExponent;
1602N/A GLfloat spotCutoff;
1602N/A} CRLight;
1602N/A
1602N/Atypedef struct {
1602N/A GLboolean lighting;
1602N/A GLboolean colorMaterial;
1602N/A GLenum shadeModel;
1602N/A GLenum colorMaterialMode;
1602N/A GLenum colorMaterialFace;
1602N/A GLcolorf ambient[2]; /* material front/back */
1602N/A GLcolorf diffuse[2]; /* material front/back */
1602N/A GLcolorf specular[2]; /* material front/back */
1602N/A GLcolorf emission[2]; /* material front/back */
1602N/A GLfloat shininess[2]; /* material front/back */
1602N/A GLint indexes[2][3]; /* material front/back amb/diff/spec */
1602N/A GLcolorf lightModelAmbient;
1602N/A GLboolean lightModelLocalViewer;
1602N/A GLboolean lightModelTwoSide;
1602N/A#if defined(CR_EXT_separate_specular_color) || defined(CR_OPENGL_VERSION_1_2)
1602N/A GLenum lightModelColorControlEXT; /* CR_EXT_separate_specular_color */
1602N/A#endif
1602N/A GLboolean colorSumEXT; /* CR_EXT_secondary_color */
1602N/A CRLight *light;
1630N/A} CRLightingState;
1630N/A
1630N/ADECLEXPORT(void) crStateLightingInitBits (CRLightingBits *l);
1602N/ADECLEXPORT(void) crStateLightingInit (CRContext *ctx);
1602N/ADECLEXPORT(void) crStateLightingDestroy (CRContext *ctx);
1602N/A
1602N/ADECLEXPORT(void) crStateLightingDiff(CRLightingBits *bb, CRbitvalue *bitID,
1602N/A CRContext *fromCtx, CRContext *toCtx);
1602N/ADECLEXPORT(void) crStateLightingSwitch(CRLightingBits *bb, CRbitvalue *bitID,
1602N/A CRContext *fromCtx, CRContext *toCtx);
1602N/A
1602N/ADECLEXPORT(void) crStateColorMaterialRecover( void );
1602N/A
#ifdef __cplusplus
}
#endif
#endif /* CR_STATE_LIGHTING_H */