\r
void ClipPlanex(GLenum plane, const GLfixed *equation)\r
{\r
- UNIMPLEMENTED();\r
+ GLfloat equationf[4] =\r
+ {\r
+ (float)equation[0] / 0x10000,\r
+ (float)equation[1] / 0x10000,\r
+ (float)equation[2] / 0x10000,\r
+ (float)equation[3] / 0x10000,\r
+ };\r
+ \r
+ ClipPlanef(plane, equationf);\r
}\r
\r
void Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)\r
\r
void Fogx(GLenum pname, GLfixed param)\r
{\r
- UNIMPLEMENTED();\r
+ TRACE("(GLenum pname = 0x%X, GLfixed param = %d)", pname, param);\r
+\r
+ es1::Context *context = es1::getContext();\r
+\r
+ if(context)\r
+ {\r
+ switch(pname)\r
+ {\r
+ case GL_FOG_MODE:\r
+ switch((GLenum)param)\r
+ {\r
+ case GL_LINEAR:\r
+ case GL_EXP:\r
+ case GL_EXP2:\r
+ context->setFogMode((GLenum)param);\r
+ break;\r
+ default:\r
+ return error(GL_INVALID_ENUM);\r
+ }\r
+ break;\r
+ case GL_FOG_DENSITY:\r
+ if(param < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setFogDensity((float)param / 0x10000);\r
+ break;\r
+ case GL_FOG_START:\r
+ context->setFogStart((float)param / 0x10000);\r
+ break;\r
+ case GL_FOG_END:\r
+ context->setFogEnd((float)param / 0x10000);\r
+ break;\r
+ case GL_FOG_COLOR:\r
+ return error(GL_INVALID_ENUM); // Need four values, should call glFogxv() instead\r
+ default:\r
+ return error(GL_INVALID_ENUM);\r
+ }\r
+ }\r
}\r
\r
void Fogxv(GLenum pname, const GLfixed *params)\r
\r
void LightModelx(GLenum pname, GLfixed param)\r
{\r
- UNIMPLEMENTED();\r
+ TRACE("(GLenum pname = 0x%X, GLfixed param = %d)", pname, param);\r
+\r
+ es1::Context *context = es1::getContext();\r
+\r
+ if(context)\r
+ {\r
+ switch(pname)\r
+ {\r
+ case GL_LIGHT_MODEL_TWO_SIDE:\r
+ context->setLightModelTwoSide(param != 0);\r
+ break;\r
+ case GL_LIGHT_MODEL_AMBIENT:\r
+ return error(GL_INVALID_ENUM); // Need four values, should call glLightModelxv() instead\r
+ default:\r
+ return error(GL_INVALID_ENUM);\r
+ }\r
+ }\r
}\r
\r
void LightModelxv(GLenum pname, const GLfixed *params)\r
{\r
- UNIMPLEMENTED();\r
+ TRACE("(GLenum pname = 0x%X, const GLfixed *params)", pname);\r
+\r
+ es1::Context *context = es1::getContext();\r
+\r
+ if(context)\r
+ {\r
+ switch(pname)\r
+ {\r
+ case GL_LIGHT_MODEL_AMBIENT:\r
+ context->setGlobalAmbient((float)params[0] / 0x10000, (float)params[1] / 0x10000, (float)params[2] / 0x10000, (float)params[3] / 0x10000);\r
+ break;\r
+ case GL_LIGHT_MODEL_TWO_SIDE:\r
+ context->setLightModelTwoSide(params[0] != 0);\r
+ break;\r
+ default:\r
+ return error(GL_INVALID_ENUM);\r
+ }\r
+ }\r
}\r
\r
void Lightf(GLenum light, GLenum pname, GLfloat param)\r
\r
void PointParameterx(GLenum pname, GLfixed param)\r
{\r
- UNIMPLEMENTED();\r
+ TRACE("(GLenum pname = 0x%X, GLfixed param = %d)", pname, param);\r
+\r
+ es1::Context *context = es1::getContext();\r
+\r
+ if(context)\r
+ {\r
+ switch(pname)\r
+ {\r
+ case GL_POINT_SIZE_MIN:\r
+ if(param < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setPointSizeMin((float)param / 0x10000);\r
+ break;\r
+ case GL_POINT_SIZE_MAX:\r
+ if(param < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setPointSizeMax((float)param / 0x10000);\r
+ break;\r
+ case GL_POINT_FADE_THRESHOLD_SIZE:\r
+ if(param < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setPointFadeThresholdSize((float)param / 0x10000);\r
+ break;\r
+ case GL_POINT_DISTANCE_ATTENUATION:\r
+ return error(GL_INVALID_ENUM); // Needs three parameters, should call glPointParameterxv() instead\r
+ default:\r
+ return error(GL_INVALID_ENUM);\r
+ }\r
+ }\r
}\r
\r
void PointParameterxv(GLenum pname, const GLfixed *params)\r
{\r
- UNIMPLEMENTED();\r
+ TRACE("(GLenum pname = 0x%X, const GLfixed *params)", pname);\r
+\r
+ es1::Context *context = es1::getContext();\r
+\r
+ if(context)\r
+ {\r
+ switch(pname)\r
+ {\r
+ case GL_POINT_SIZE_MIN:\r
+ if(params[0] < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setPointSizeMin((float)params[0] / 0x10000);\r
+ break;\r
+ case GL_POINT_SIZE_MAX:\r
+ if(params[0] < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setPointSizeMax((float)params[0] / 0x10000);\r
+ break;\r
+ case GL_POINT_DISTANCE_ATTENUATION:\r
+ context->setPointDistanceAttenuation((float)params[0] / 0x10000, (float)params[1] / 0x10000, (float)params[2] / 0x10000);\r
+ break;\r
+ case GL_POINT_FADE_THRESHOLD_SIZE:\r
+ if(params[0] < 0)\r
+ {\r
+ return error(GL_INVALID_VALUE);\r
+ }\r
+ context->setPointFadeThresholdSize((float)params[0] / 0x10000);\r
+ break;\r
+ default:\r
+ return error(GL_INVALID_ENUM);\r
+ }\r
+ }\r
}\r
\r
void PointSize(GLfloat size)\r