Skip to content

API additions #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 20, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 45 additions & 2 deletions src/gc_gl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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, &param);
}

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)
{
switch (pname) {
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
}
}
Expand All @@ -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;
Expand Down Expand Up @@ -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

Expand Down