2006-05-16 14:52:36 +00:00
|
|
|
|
2005-01-12 15:26:45 +00:00
|
|
|
#include "tinygl/zgl.h"
|
2005-01-12 15:20:02 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// glVertex
|
|
|
|
|
|
|
|
void tglVertex4f(float x, float y, float z, float w) {
|
|
|
|
TGLParam p[5];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Vertex;
|
|
|
|
p[1].f = x;
|
|
|
|
p[2].f = y;
|
|
|
|
p[3].f = z;
|
|
|
|
p[4].f = w;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglVertex2f(float x, float y) {
|
|
|
|
tglVertex4f(x, y, 0, 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglVertex3f(float x, float y, float z) {
|
|
|
|
tglVertex4f(x, y, z, 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglVertex3fv(float *v) {
|
|
|
|
tglVertex4f(v[0], v[1], v[2], 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// glNormal
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglNormal3f(float x, float y, float z) {
|
|
|
|
TGLParam p[4];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Normal;
|
|
|
|
p[1].f = x;
|
|
|
|
p[2].f = y;
|
|
|
|
p[3].f = z;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglNormal3fv(float *v) {
|
|
|
|
tglNormal3f(v[0], v[1], v[2]);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// glColor
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglColor4f(float r, float g, float b, float a) {
|
|
|
|
TGLParam p[8];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Color;
|
|
|
|
p[1].f = r;
|
|
|
|
p[2].f = g;
|
|
|
|
p[3].f = b;
|
|
|
|
p[4].f = a;
|
|
|
|
// direct convertion to integer to go faster if no shading
|
|
|
|
p[5].ui = (unsigned int)(r * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) + ZB_POINT_RED_MIN);
|
|
|
|
p[6].ui = (unsigned int)(g * (ZB_POINT_GREEN_MAX - ZB_POINT_GREEN_MIN) + ZB_POINT_GREEN_MIN);
|
|
|
|
p[7].ui = (unsigned int)(b * (ZB_POINT_BLUE_MAX - ZB_POINT_BLUE_MIN) + ZB_POINT_BLUE_MIN);
|
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglColor4fv(float *v) {
|
|
|
|
TGLParam p[8];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Color;
|
|
|
|
p[1].f=v[0];
|
|
|
|
p[2].f=v[1];
|
|
|
|
p[3].f=v[2];
|
|
|
|
p[4].f=v[3];
|
|
|
|
// direct convertion to integer to go faster if no shading
|
|
|
|
p[5].ui = (unsigned int)(v[0] * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) + ZB_POINT_RED_MIN);
|
|
|
|
p[6].ui = (unsigned int)(v[1] * (ZB_POINT_GREEN_MAX - ZB_POINT_GREEN_MIN) + ZB_POINT_GREEN_MIN);
|
|
|
|
p[7].ui = (unsigned int)(v[2] * (ZB_POINT_BLUE_MAX - ZB_POINT_BLUE_MIN) + ZB_POINT_BLUE_MIN);
|
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglColor3f(float x, float y, float z) {
|
|
|
|
tglColor4f(x, y, z, 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void glColor3fv(float *v) {
|
|
|
|
tglColor4f(v[0], v[1], v[2], 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// TexCoord
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglTexCoord4f(float s, float t, float r, float q) {
|
|
|
|
TGLParam p[5];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_TexCoord;
|
|
|
|
p[1].f = s;
|
|
|
|
p[2].f = t;
|
|
|
|
p[3].f = r;
|
|
|
|
p[4].f = q;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglTexCoord2f(float s, float t) {
|
|
|
|
tglTexCoord4f(s, t, 0, 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglTexCoord2fv(float *v) {
|
|
|
|
tglTexCoord4f(v[0], v[1], 0, 1);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglEdgeFlag(int flag) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_EdgeFlag;
|
|
|
|
p[1].i = flag;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// misc
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglShadeModel(int mode) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
assert(mode == TGL_FLAT || mode == TGL_SMOOTH);
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_ShadeModel;
|
|
|
|
p[1].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglCullFace(int mode) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
assert(mode == TGL_BACK || mode == TGL_FRONT || mode == TGL_FRONT_AND_BACK);
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_CullFace;
|
|
|
|
p[1].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglFrontFace(int mode) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
assert(mode == TGL_CCW || mode == TGL_CW);
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
mode = (mode != TGL_CCW);
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_FrontFace;
|
|
|
|
p[1].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPolygonMode(int face, int mode) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
assert(face == TGL_BACK || face == TGL_FRONT || face == TGL_FRONT_AND_BACK);
|
|
|
|
assert(mode == TGL_POINT || mode == TGL_LINE || mode == TGL_FILL);
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_PolygonMode;
|
|
|
|
p[1].i = face;
|
|
|
|
p[2].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// glEnable, glDisable
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglEnable(int cap) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_EnableDisable;
|
|
|
|
p[1].i = cap;
|
|
|
|
p[2].i = 1;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglDisable(int cap) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_EnableDisable;
|
|
|
|
p[1].i = cap;
|
|
|
|
p[2].i = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// glBegin, glEnd
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglBegin(int mode) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Begin;
|
|
|
|
p[1].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglEnd() {
|
|
|
|
TGLParam p[1];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_End;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// matrix
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglMatrixMode(int mode) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_MatrixMode;
|
|
|
|
p[1].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLoadMatrixf(const float *m) {
|
|
|
|
TGLParam p[17];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_LoadMatrix;
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
p[i + 1].f = m[i];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLoadIdentity() {
|
|
|
|
TGLParam p[1];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_LoadIdentity;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglMultMatrixf(const float *m) {
|
|
|
|
TGLParam p[17];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_MultMatrix;
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
p[i + 1].f = m[i];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPushMatrix() {
|
|
|
|
TGLParam p[1];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_PushMatrix;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPopMatrix() {
|
|
|
|
TGLParam p[1];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_PopMatrix;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglRotatef(float angle, float x, float y, float z) {
|
|
|
|
TGLParam p[5];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Rotate;
|
|
|
|
p[1].f = angle;
|
|
|
|
p[2].f = x;
|
|
|
|
p[3].f = y;
|
|
|
|
p[4].f = z;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglTranslatef(float x, float y, float z) {
|
|
|
|
TGLParam p[4];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Translate;
|
|
|
|
p[1].f = x;
|
|
|
|
p[2].f = y;
|
|
|
|
p[3].f = z;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglScalef(float x, float y, float z) {
|
|
|
|
TGLParam p[4];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Scale;
|
|
|
|
p[1].f = x;
|
|
|
|
p[2].f = y;
|
|
|
|
p[3].f = z;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglViewport(int x, int y, int width, int height) {
|
|
|
|
TGLParam p[5];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Viewport;
|
|
|
|
p[1].i = x;
|
|
|
|
p[2].i = y;
|
|
|
|
p[3].i = width;
|
|
|
|
p[4].i = height;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglFrustum(double left, double right, double bottom, double top,
|
|
|
|
double nearv, double farv) {
|
|
|
|
TGLParam p[7];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Frustum;
|
|
|
|
p[1].f = (float)left;
|
|
|
|
p[2].f = (float)right;
|
|
|
|
p[3].f = (float)bottom;
|
|
|
|
p[4].f = (float)top;
|
|
|
|
p[5].f = (float)nearv;
|
|
|
|
p[6].f = (float)farv;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// lightening
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglMaterialfv(int mode, int type, float *v) {
|
|
|
|
TGLParam p[7];
|
|
|
|
int i, n;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
assert(mode == TGL_FRONT || mode == TGL_BACK || mode==TGL_FRONT_AND_BACK);
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Material;
|
|
|
|
p[1].i = mode;
|
|
|
|
p[2].i = type;
|
|
|
|
n = 4;
|
|
|
|
if (type == TGL_SHININESS)
|
|
|
|
n = 1;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
p[3 + i].f = v[i];
|
|
|
|
for (i = n; i < 4; i++)
|
|
|
|
p[3 + i].f = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglMaterialf(int mode, int type, float v) {
|
|
|
|
TGLParam p[7];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Material;
|
|
|
|
p[1].i = mode;
|
|
|
|
p[2].i = type;
|
|
|
|
p[3].f = v;
|
|
|
|
for (i = 0; i < 3; i++)
|
|
|
|
p[4 + i].f = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglColorMaterial(int mode, int type) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_ColorMaterial;
|
|
|
|
p[1].i = mode;
|
|
|
|
p[2].i = type;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLightfv(int light, int type, float *v) {
|
|
|
|
TGLParam p[7];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op=OP_Light;
|
|
|
|
p[1].i=light;
|
|
|
|
p[2].i=type;
|
|
|
|
// TODO: 3 composants
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
p[3 + i].f = v[i];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLightf(int light, int type, float v) {
|
|
|
|
TGLParam p[7];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Light;
|
|
|
|
p[1].i = light;
|
|
|
|
p[2].i = type;
|
|
|
|
p[3].f = v;
|
|
|
|
for (i = 0; i < 3; i++)
|
|
|
|
p[4 + i].f = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLightModeli(int pname, int param) {
|
|
|
|
TGLParam p[6];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_LightModel;
|
|
|
|
p[1].i = pname;
|
|
|
|
p[2].f = (float)param;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
p[3 + i].f = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLightModelfv(int pname, float *param) {
|
|
|
|
TGLParam p[6];
|
|
|
|
int i;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_LightModel;
|
|
|
|
p[1].i = pname;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
p[2 + i].f = param[i];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// clear
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglClear(int mask) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Clear;
|
|
|
|
p[1].i = mask;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglClearColor(float r, float g, float b, float a) {
|
|
|
|
TGLParam p[5];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_ClearColor;
|
|
|
|
p[1].f = r;
|
|
|
|
p[2].f = g;
|
|
|
|
p[3].f = b;
|
|
|
|
p[4].f = a;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglClearDepth(double depth) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_ClearDepth;
|
|
|
|
p[1].f = (float)depth;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// textures
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2005-01-12 18:00:19 +00:00
|
|
|
void tglTexImage2D( int target, int level, int components,
|
2005-01-12 15:20:02 +00:00
|
|
|
int width, int height, int border,
|
2006-05-16 14:52:36 +00:00
|
|
|
int format, int type, void *pixels) {
|
|
|
|
TGLParam p[10];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_TexImage2D;
|
|
|
|
p[1].i = target;
|
|
|
|
p[2].i = level;
|
|
|
|
p[3].i = components;
|
|
|
|
p[4].i = width;
|
|
|
|
p[5].i = height;
|
|
|
|
p[6].i = border;
|
|
|
|
p[7].i = format;
|
|
|
|
p[8].i = type;
|
|
|
|
p[9].p = pixels;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglBindTexture(int target, int texture) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_BindTexture;
|
|
|
|
p[1].i = target;
|
|
|
|
p[2].i = texture;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglTexEnvi(int target, int pname, int param) {
|
|
|
|
TGLParam p[8];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_TexEnv;
|
|
|
|
p[1].i = target;
|
|
|
|
p[2].i = pname;
|
|
|
|
p[3].i = param;
|
|
|
|
p[4].f = 0;
|
|
|
|
p[5].f = 0;
|
|
|
|
p[6].f = 0;
|
|
|
|
p[7].f = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglTexParameteri(int target, int pname, int param) {
|
|
|
|
TGLParam p[8];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_TexParameter;
|
|
|
|
p[1].i = target;
|
|
|
|
p[2].i = pname;
|
|
|
|
p[3].i = param;
|
|
|
|
p[4].f = 0;
|
|
|
|
p[5].f = 0;
|
|
|
|
p[6].f = 0;
|
|
|
|
p[7].f = 0;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPixelStorei(int pname, int param) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_PixelStore;
|
|
|
|
p[1].i = pname;
|
|
|
|
p[2].i = param;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// selection
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglInitNames() {
|
|
|
|
TGLParam p[1];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_InitNames;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPushName(unsigned int name) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_PushName;
|
|
|
|
p[1].i = name;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPopName() {
|
|
|
|
TGLParam p[1];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_PopName;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglLoadName(unsigned int name) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_LoadName;
|
|
|
|
p[1].i = name;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglPolygonOffset(TGLfloat factor, TGLfloat units) {
|
2005-01-12 18:00:19 +00:00
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
p[0].op = OP_PolygonOffset;
|
|
|
|
p[1].f = factor;
|
|
|
|
p[2].f = units;
|
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// Special Functions
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglCallList(unsigned int list) {
|
|
|
|
TGLParam p[2];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_CallList;
|
|
|
|
p[1].i = list;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglFlush() {
|
|
|
|
// nothing to do
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglHint(int target, int mode) {
|
|
|
|
TGLParam p[3];
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
p[0].op = OP_Hint;
|
|
|
|
p[1].i = target;
|
|
|
|
p[2].i = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
gl_add_op(p);
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
// Non standard functions
|
2005-01-12 15:20:02 +00:00
|
|
|
|
2006-05-16 14:52:36 +00:00
|
|
|
void tglDebug(int mode) {
|
|
|
|
GLContext *c = gl_get_context();
|
|
|
|
c->print_flag = mode;
|
2005-01-12 15:20:02 +00:00
|
|
|
}
|