28#ifndef __FREEWRL_OPENGL_UTILS_H__
29#define __FREEWRL_OPENGL_UTILS_H__
32#define MAX_USER_DEFINED_SHADERS 40
34int getNextFreeUserDefinedShaderSlot();
35void kill_userDefinedShaders();
36void sendShaderTextToEngine(
int ste,
int partsN,
char ** vertSource,
char ** fragSource);
38typedef enum vertexShaderResources {
41 vertexPrecisionDeclare,
48 vertexPositionDeclare,
49 vertexSimpleColourDeclare,
50 vertexTextureMatrixDeclare,
51 vertexOneMaterialDeclare,
52 vertexBackMaterialDeclare,
53 vertFrontColourDeclare,
54 vertexTexCoordInputDeclare,
55 vertexTexCoordOutputDeclare,
56 vertexHatchPositionDeclare,
57 vertexPointSizeDeclare,
61 vertexLightingEquation,
66 vertexProjCalTexCoord,
67 vertexMultiProjValDec,
68 vertexMultiProjCalTexCoord,
72 vertexPointSizeAssign,
73 vertexPositionCalculation,
75 vertexOneMaterialCalculation,
76 vertexNormPosCalculation,
77 vertexSingleTextureCalculation,
78 vertexADSLCalculation,
79 vertexSimpleColourCalculation,
80 vertexHatchPositionCalculation,
82 vertexUserDefinedInput,
84 vertexProjTexCalculation,
85 vertexMultiProjTexCalculation,
89} vertexShaderResources_t;
91typedef enum fragmenShaderResources {
93 fragmentPrecisionDeclare,
96 fragmentMultiTexDefines,
98 fragmentFillPropDefines,
100 fragmentNormalColorDefs,
102 fragmentTexCoordDeclare,
104 fragmentMultiTexDeclare,
105 fragmentSimpleColourDeclare,
106 fragmentOneColourDeclare,
107 fragmentBackColourDeclare,
108 fragmentNormPosDeclare,
109 fragmentHatchPositionDeclare,
110 fragmentADSLLightModel,
111 fragmentMultiTexModel,
112 fragmentFillPropModel,
117 fragmentProjCalTexCoord,
118 fragmentMultiProjValDec,
119 fragmentMultiProjCalTexCoord,
124 fragmentUserDefinedInput,
126 fragmentSimpleColourAssign,
127 fragmentOneColourAssign,
129 fragmentTextureAssign,
130 fragmentFillPropAssign,
132 fragmentProjTexAssign,
136} fragmentShaderResources_t;
143OLDCODE
int multitex_mode[2];
144OLDCODE
int multitex_source[2];
145OLDCODE
int multitex_function;
150void do_textureTransform (
struct X3D_Node *textureNode,
int ttnum);
151void markForDispose(
struct X3D_Node *node,
int recursive);
160BackEndClearBuffer(
int);
163BackEndLightsOff(
void);
166void drawBBOX(
struct X3D_Node *node);
170void fw_glMatrixMode(GLint mode);
171void fw_glLoadIdentity(
void);
172void fw_glPushMatrix(
void);
173void fw_glPopMatrix(
void);
174void fw_glTranslated(GLDOUBLE a, GLDOUBLE b, GLDOUBLE c);
175void fw_glTransformd(GLDOUBLE *mat);
176void fw_glMultMatrixd(GLDOUBLE *mat);
177void fw_glTranslatef(
float a,
float b,
float c);
178void fw_glRotateRad (GLDOUBLE a, GLDOUBLE b, GLDOUBLE c, GLDOUBLE d);
179void fw_glRotated (GLDOUBLE a, GLDOUBLE b, GLDOUBLE c, GLDOUBLE d);
180void fw_glRotatef (
float a,
float b,
float c,
float d);
181void fw_glScaled (GLDOUBLE a, GLDOUBLE b, GLDOUBLE c);
182void fw_glScalef (
float a,
float b,
float c);
183void fw_glGetDoublev (
int ty, GLDOUBLE *mat);
184void fw_glSetDoublev (
int ty, GLDOUBLE *mat);
187void fw_iphone_enableClientState(GLenum aaa);
188void fw_iphone_disableClientState(GLenum aaa);
189void fw_iphone_vertexPointer(GLint aaa,GLenum bbb,GLsizei ccc,
const GLvoid *ddd);
190void fw_iphone_normalPointer(GLenum aaa,GLsizei bbb,
const GLvoid *ccc);
191void fw_iphone_texcoordPointer(GLint aaa, GLenum bbb ,GLsizei ccc,
const GLvoid *ddd);
192void fw_iphone_colorPointer(GLint aaa, GLenum bbb,GLsizei ccc,
const GLvoid *ddd);
193void fw_gluPerspective(GLDOUBLE fovy, GLDOUBLE aspect, GLDOUBLE zNear, GLDOUBLE zFar);
194void fw_gluPickMatrix(GLDOUBLE xx, GLDOUBLE yy, GLDOUBLE width, GLDOUBLE height, GLint *vp);
195void fw_Frustum(GLDOUBLE left, GLDOUBLE right, GLDOUBLE bottom, GLDOUBLE top, GLDOUBLE nearZ, GLDOUBLE farZ);
196void fw_Ortho(GLDOUBLE left, GLDOUBLE right, GLDOUBLE bottom, GLDOUBLE top, GLDOUBLE nearZ, GLDOUBLE farZ);
197void fw_gluProject( GLDOUBLE objX,
200 const GLDOUBLE *model,
201 const GLDOUBLE *proj,
206void fw_gluUnProject( GLDOUBLE winX,
209 const GLDOUBLE *model,
210 const GLDOUBLE *proj,
216void fw_gluPickMatrix(GLDOUBLE x, GLDOUBLE y, GLDOUBLE deltax, GLDOUBLE deltay,
219void printMaxStackUsed();
220GLDOUBLE *getPickrayMatrix(
int index);
221void setPickrayMatrix(
int index, GLDOUBLE *mat);
222void freeMallocedNodeFields(
struct X3D_Node* node);
223void unRegisterX3DNode(
struct X3D_Node * tmp);
227void fw_gluPerspectiveTexture(GLDOUBLE fovy, GLDOUBLE aspect, GLDOUBLE zNear, GLDOUBLE zFar);
228void fw_gluPerspectiveTextureLookAt(GLDOUBLE ex, GLDOUBLE ey, GLDOUBLE ez,
229 GLDOUBLE cx, GLDOUBLE cy, GLDOUBLE cz,
230 GLDOUBLE ux,GLDOUBLE uy,GLDOUBLE uz);