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);
154s_shader_capabilities_t *getMyShader(
unsigned int);
156void sendMatriciesToShader(s_shader_capabilities_t *me);
157void sendMaterialsToShader(s_shader_capabilities_t *me);
160BackEndClearBuffer(
int);
162void fw_glMatrixMode(GLint mode);
163void fw_glLoadIdentity(
void);
164void fw_glPushMatrix(
void);
165void fw_glPopMatrix(
void);
166void fw_glTranslated(GLDOUBLE a, GLDOUBLE b, GLDOUBLE c);
167void fw_glTransformd(GLDOUBLE *mat);
168void fw_glMultMatrixd(GLDOUBLE *mat);
169void fw_glTranslatef(
float a,
float b,
float c);
170void fw_glRotateRad (GLDOUBLE a, GLDOUBLE b, GLDOUBLE c, GLDOUBLE d);
171void fw_glRotated (GLDOUBLE a, GLDOUBLE b, GLDOUBLE c, GLDOUBLE d);
172void fw_glRotatef (
float a,
float b,
float c,
float d);
173void fw_glScaled (GLDOUBLE a, GLDOUBLE b, GLDOUBLE c);
174void fw_glScalef (
float a,
float b,
float c);
175void fw_glGetDoublev (
int ty, GLDOUBLE *mat);
176void fw_glSetDoublev (
int ty, GLDOUBLE *mat);
177void fw_glGetInteger(
int ty,
int *params);
180void fw_iphone_enableClientState(GLenum aaa);
181void fw_iphone_disableClientState(GLenum aaa);
182void fw_iphone_vertexPointer(GLint aaa,GLenum bbb,GLsizei ccc,
const GLvoid *ddd);
183void fw_iphone_normalPointer(GLenum aaa,GLsizei bbb,
const GLvoid *ccc);
184void fw_iphone_texcoordPointer(GLint aaa, GLenum bbb ,GLsizei ccc,
const GLvoid *ddd);
185void fw_iphone_colorPointer(GLint aaa, GLenum bbb,GLsizei ccc,
const GLvoid *ddd);
186void fw_gluPerspective(GLDOUBLE fovy, GLDOUBLE aspect, GLDOUBLE zNear, GLDOUBLE zFar);
187void fw_gluPickMatrix(GLDOUBLE xx, GLDOUBLE yy, GLDOUBLE width, GLDOUBLE height, GLint *vp);
188void fw_Frustum(GLDOUBLE left, GLDOUBLE right, GLDOUBLE bottom, GLDOUBLE top, GLDOUBLE nearZ, GLDOUBLE farZ);
189void fw_Ortho(GLDOUBLE left, GLDOUBLE right, GLDOUBLE bottom, GLDOUBLE top, GLDOUBLE nearZ, GLDOUBLE farZ);
190void fw_gluProject( GLDOUBLE objX,
193 const GLDOUBLE *model,
194 const GLDOUBLE *proj,
199void fw_gluUnProject( GLDOUBLE winX,
202 const GLDOUBLE *model,
203 const GLDOUBLE *proj,
209void fw_gluPickMatrix(GLDOUBLE x, GLDOUBLE y, GLDOUBLE deltax, GLDOUBLE deltay,
212void printMaxStackUsed();
213GLDOUBLE *getPickrayMatrix(
int index);
214void setPickrayMatrix(
int index, GLDOUBLE *mat);
215void freeMallocedNodeFields(
struct X3D_Node* node);
216void unRegisterX3DNode(
struct X3D_Node * tmp);
220void fw_gluPerspectiveTexture(GLDOUBLE fovy, GLDOUBLE aspect, GLDOUBLE zNear, GLDOUBLE zFar);
221void fw_gluPerspectiveTextureLookAt(GLDOUBLE ex, GLDOUBLE ey, GLDOUBLE ez,
222 GLDOUBLE cx, GLDOUBLE cy, GLDOUBLE cz,
223 GLDOUBLE ux,GLDOUBLE uy,GLDOUBLE uz);