diff --git a/src/gc_gl.c b/src/gc_gl.c index 08ff5db..d846e06 100644 --- a/src/gc_gl.c +++ b/src/gc_gl.c @@ -559,6 +559,11 @@ void glLightModelfv(GLenum pname, const GLfloat *params) glparamstate.dirty.bits.dirty_material = 1; }; +void glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + glMaterialfv(face, pname, ¶m); +} + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) { switch (pname) { @@ -723,6 +728,11 @@ void glColor4fv(const GLfloat *v) glparamstate.imm_mode.current_color[3] = clampf_01(v[3]); } +void glColor3fv(const GLfloat *v) +{ + glColor3f(v[0], v[1], v[2]); +} + void glTexCoord2d(GLdouble u, GLdouble v) { glTexCoord2f(u, v); @@ -734,6 +744,14 @@ void glTexCoord2f(GLfloat u, GLfloat v) glparamstate.imm_mode.current_texcoord[1] = v; } +void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + glTexCoord2f(s, t); + if (r != 0.0) { + warning("glTexCoord3f not supported"); + } +} + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) { glparamstate.imm_mode.current_normal[0] = nx; @@ -793,6 +811,11 @@ void glVertex3f(GLfloat x, GLfloat y, GLfloat z) vert[11] = z; } +void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + glVertex3f(x / w, y / w, z / w); +} + void glMatrixMode(GLenum mode) { switch (mode) { @@ -1556,6 +1579,9 @@ void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha void glDisableClientState(GLenum cap) { switch (cap) { + case GL_COLOR_ARRAY: + glparamstate.color_enabled = 0; + break; case GL_INDEX_ARRAY: glparamstate.index_enabled = 0; break; @@ -1571,13 +1597,15 @@ void glDisableClientState(GLenum cap) case GL_EDGE_FLAG_ARRAY: case GL_FOG_COORD_ARRAY: case GL_SECONDARY_COLOR_ARRAY: - case GL_COLOR_ARRAY: return; } } void glEnableClientState(GLenum cap) { switch (cap) { + case GL_COLOR_ARRAY: + glparamstate.color_enabled = 1; + break; case GL_INDEX_ARRAY: glparamstate.index_enabled = 1; break; @@ -1593,7 +1621,6 @@ void glEnableClientState(GLenum cap) case GL_EDGE_FLAG_ARRAY: case GL_FOG_COORD_ARRAY: case GL_SECONDARY_COLOR_ARRAY: - case GL_COLOR_ARRAY: return; } } @@ -1612,6 +1639,16 @@ void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) if (stride == 0) glparamstate.normal_stride = 3; } + +void glColorPointer(GLint size, GLenum type, + GLsizei stride, const GLvoid *pointer) +{ + glparamstate.color_array = (float *)pointer; + glparamstate.color_stride = stride; + if (stride == 0) + glparamstate.color_stride = size; +} + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { glparamstate.texcoord_array = (float *)pointer; @@ -2597,10 +2634,16 @@ void glGetFloatv(GLenum pname, GLfloat *params) // TODO STUB IMPLEMENTATION +void glClipPlane(GLenum plane, const GLdouble *equation) {} const GLubyte *glGetString(GLenum name) { return gl_null_string; } +void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {} +void glLightModelf(GLenum pname, GLfloat param) {} +void glLightModeli(GLenum pname, GLint param) {} void glPushAttrib(GLbitfield mask) {} void glPopAttrib(void) {} +void glPolygonMode(GLenum face, GLenum mode) {} void glReadBuffer(GLenum mode) {} +void glPixelStorei(GLenum pname, GLint param) {} void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *data) {} void glAlphaFunc(GLenum func, GLclampf ref) {} // We need a TEVSTAGE for comparing and discarding pixels by alpha value