TINYGL: Implement tglDrawArrays.

This commit is contained in:
Vincent Pelletier 2017-04-22 16:41:27 +00:00
parent 0b823ac2e9
commit 500803fc38
3 changed files with 23 additions and 0 deletions

View file

@ -77,6 +77,18 @@ void glopArrayElement(GLContext *c, GLParam *param) {
} }
} }
void glopDrawArrays(GLContext *c, GLParam *p) {
GLParam array_element[2];
GLParam begin[2];
begin[1].i = p[1].i;
glopBegin(c, begin);
for (int i=0; i < p[3].i; i++) {
array_element[1].i = p[2].i + i;
glopArrayElement(c, array_element);
}
glopEnd(c, NULL);
}
void glopEnableClientState(GLContext *c, GLParam *p) { void glopEnableClientState(GLContext *c, GLParam *p) {
c->client_states |= p[1].i; c->client_states |= p[1].i;
} }
@ -117,6 +129,15 @@ void tglArrayElement(TGLint i) {
gl_add_op(p); gl_add_op(p);
} }
void tglDrawArrays(TGLenum mode, TGLint first, TGLsizei count) {
TinyGL::GLParam p[4];
p[0].op = TinyGL::OP_DrawArrays;
p[1].i = mode;
p[2].i = first;
p[3].i = count;
gl_add_op(p);
}
void tglEnableClientState(TGLenum array) { void tglEnableClientState(TGLenum array) {
TinyGL::GLParam p[2]; TinyGL::GLParam p[2];
p[0].op = TinyGL::OP_EnableClientState; p[0].op = TinyGL::OP_EnableClientState;

View file

@ -836,6 +836,7 @@ void tglSetShadowColor(unsigned char r, unsigned char g, unsigned char b);
void tglEnableClientState(TGLenum array); void tglEnableClientState(TGLenum array);
void tglDisableClientState(TGLenum array); void tglDisableClientState(TGLenum array);
void tglArrayElement(TGLint i); void tglArrayElement(TGLint i);
void tglDrawArrays(TGLenum mode, TGLint first, TGLsizei count);
void tglVertexPointer(TGLint size, TGLenum type, TGLsizei stride, const TGLvoid *pointer); void tglVertexPointer(TGLint size, TGLenum type, TGLsizei stride, const TGLvoid *pointer);
void tglColorPointer(TGLint size, TGLenum type, TGLsizei stride, const TGLvoid *pointer); void tglColorPointer(TGLint size, TGLenum type, TGLsizei stride, const TGLvoid *pointer);
void tglNormalPointer(TGLenum type, TGLsizei stride, const TGLvoid *pointer); void tglNormalPointer(TGLenum type, TGLsizei stride, const TGLvoid *pointer);

View file

@ -91,6 +91,7 @@ ADD_OP(NextBuffer, 1, "%p")
// opengl 1.1 arrays // opengl 1.1 arrays
ADD_OP(ArrayElement, 1, "%d") ADD_OP(ArrayElement, 1, "%d")
ADD_OP(DrawArrays, 3, "%C %d %d")
ADD_OP(EnableClientState, 1, "%C") ADD_OP(EnableClientState, 1, "%C")
ADD_OP(DisableClientState, 1, "%C") ADD_OP(DisableClientState, 1, "%C")
ADD_OP(VertexPointer, 4, "%d %C %d %p") ADD_OP(VertexPointer, 4, "%d %C %d %p")