ref: 441fcdcad62c32e17c72e11ba1e7312aed46b1d1
parent: 850d4c3da6cdb2876d07d780cf36baf42a72e66c
author: David <gek@katherine>
date: Thu Mar 11 09:35:23 EST 2021
Automatic commit.
--- a/src/arrays.c
+++ b/src/arrays.c
@@ -291,7 +291,8 @@
-void glopArrayElement(GLContext* c, GLParam* param) {
+void glopArrayElement(GLParam* param) {
+ GLContext* c = gl_get_context();
GLint i;
GLint states = c->client_states;
GLint idx = param[1].i;
@@ -304,7 +305,7 @@
p[2].f = c->color_array[i + 1];
p[3].f = c->color_array[i + 2];
p[4].f = (size > 3) ? c->color_array[i + 3] : 1.0f;
- glopColor(c, p);
+ glopColor(p);
}
if (states & NORMAL_ARRAY) {
i = idx * (3 + c->normal_array_stride);
@@ -329,7 +330,7 @@
p[2].f = c->vertex_array[i + 1];
p[3].f = (size > 2) ? c->vertex_array[i + 2] : 0.0f;
p[4].f = (size > 3) ? c->vertex_array[i + 3] : 1.0f;
- glopVertex(c, p);
+ glopVertex(p);
}
}
@@ -353,7 +354,7 @@
glEnd();
}
-void glopEnableClientState(GLContext* c, GLParam* p) { c->client_states |= p[1].i; }
+void glopEnableClientState(GLParam* p) { gl_get_context()->client_states |= p[1].i; }
void glEnableClientState(GLenum array) {
GLParam p[2];
@@ -379,7 +380,7 @@
gl_add_op(p);
}
-void glopDisableClientState(GLContext* c, GLParam* p) { c->client_states &= p[1].i; }
+void glopDisableClientState( GLParam* p) {GLContext* c = gl_get_context(); c->client_states &= p[1].i; }
void glDisableClientState(GLenum array) {
GLParam p[2];
@@ -405,7 +406,8 @@
gl_add_op(p);
}
-void glopVertexPointer(GLContext* c, GLParam* p) {
+void glopVertexPointer(GLParam* p) {
+ GLContext* c = gl_get_context();
c->vertex_array_size = p[1].i;
c->vertex_array_stride = p[2].i;
c->vertex_array = p[3].p;
@@ -429,7 +431,8 @@
gl_add_op(p);
}
-void glopColorPointer(GLContext* c, GLParam* p) {
+void glopColorPointer(GLParam* p) {
+ GLContext* c = gl_get_context();
c->color_array_size = p[1].i;
c->color_array_stride = p[2].i;
c->color_array = p[3].p;
@@ -453,7 +456,8 @@
gl_add_op(p);
}
-void glopNormalPointer(GLContext* c, GLParam* p) {
+void glopNormalPointer(GLParam* p) {
+ GLContext* c = gl_get_context();
c->normal_array_stride = p[1].i;
c->normal_array = p[2].p;
}
@@ -475,7 +479,8 @@
gl_add_op(p);
}
-void glopTexCoordPointer(GLContext* c, GLParam* p) {
+void glopTexCoordPointer(GLParam* p) {
+ GLContext* c = gl_get_context();
c->texcoord_array_size = p[1].i;
c->texcoord_array_stride = p[2].i;
c->texcoord_array = p[3].p;
--- a/src/clear.c
+++ b/src/clear.c
@@ -1,14 +1,15 @@
#include "zgl.h"
-void glopClearColor(GLContext* c, GLParam* p) {
+void glopClearColor(GLParam* p) {
+ GLContext* c = gl_get_context();
c->clear_color.v[0] = p[1].f;
c->clear_color.v[1] = p[2].f;
c->clear_color.v[2] = p[3].f;
c->clear_color.v[3] = p[4].f;
}
-void glopClearDepth(GLContext* c, GLParam* p) { c->clear_depth = p[1].f; }
+void glopClearDepth(GLParam* p) { GLContext* c = gl_get_context(); c->clear_depth = p[1].f; }
-void glopClear(GLContext* c, GLParam* p) {
+void glopClear(GLParam* p) {GLContext* c = gl_get_context();
GLint mask = p[1].i;
GLint z = 0;
GLint r = (GLint)(c->clear_color.v[0] * COLOR_MULT_MASK);
--- a/src/clip.c
+++ b/src/clip.c
@@ -10,8 +10,8 @@
#define CLIP_ZMIN (1 << 4)
#define CLIP_ZMAX (1 << 5)
-static inline void gl_transform_to_viewport_clip_c(GLContext* c, GLVertex* v) { //MARK: NOT_INLINED_IN_OG
-
+static inline void gl_transform_to_viewport_clip_c(GLVertex* v) { //MARK: NOT_INLINED_IN_OG
+ GLContext* c = gl_get_context();
/* coordinates */
{
GLfloat winv = 1.0 / v->pc.W;
@@ -85,7 +85,7 @@
GLfloat (*clip_proc[6])(V4*, V4*, V4*) = {clip_xmin, clip_xmax, clip_ymin, clip_ymax, clip_zmin, clip_zmax};
/* point */
-static void gl_add_select1(GLContext* c, GLint z1, GLint z2, GLint z3) {
+static void gl_add_select1(GLint z1, GLint z2, GLint z3) {
GLint min, max;
min = max = z1;
if (z2 < min)
@@ -97,14 +97,15 @@
if (z3 > max)
max = z3;
- gl_add_select(c, 0xffffffff - min, 0xffffffff - max);
+ gl_add_select(0xffffffff - min, 0xffffffff - max);
}
-void gl_draw_point(GLContext* c, GLVertex* p0) {
+void gl_draw_point(GLVertex* p0) {
+ GLContext* c = gl_get_context();
if (p0->clip_code == 0) {
if (c->render_mode == GL_SELECT) {
- gl_add_select(c, p0->zp.z, p0->zp.z);
+ gl_add_select(p0->zp.z, p0->zp.z);
}else if (c->render_mode == GL_FEEDBACK){
- gl_add_feedback(c,GL_POINT_TOKEN,p0,NULL,NULL,0);
+ gl_add_feedback(GL_POINT_TOKEN,p0,NULL,NULL,0);
} else {
ZB_plot(c->zb, &p0->zp);
}
@@ -155,7 +156,7 @@
return 0;
return 1;
}
-void gl_draw_line(GLContext* c, GLVertex* p1, GLVertex* p2) {
+void gl_draw_line(GLVertex* p1, GLVertex* p2) {GLContext* c = gl_get_context();
GLfloat dx, dy, dz, dw, x1, y1, z1, w1;
GLVertex q1, q2;
@@ -166,10 +167,10 @@
if ((cc1 | cc2) == 0) {
if (c->render_mode == GL_SELECT) {
- gl_add_select1(c, p1->zp.z, p2->zp.z, p2->zp.z);
+ gl_add_select1(p1->zp.z, p2->zp.z, p2->zp.z);
}else if (c->render_mode == GL_FEEDBACK){
gl_add_feedback(
- c, GL_LINE_TOKEN,
+ GL_LINE_TOKEN,
p1,
p2,
NULL,
@@ -200,8 +201,8 @@
GLinterpolate(&q1, p1, p2, tmin);
GLinterpolate(&q2, p1, p2, tmax);
- gl_transform_to_viewport_clip_c(c, &q1);
- gl_transform_to_viewport_clip_c(c, &q2);
+ gl_transform_to_viewport_clip_c(&q1);
+ gl_transform_to_viewport_clip_c(&q2);
if (c->zb->depth_test)
ZB_line_z(c->zb, &q1.zp, &q2.zp);
@@ -216,7 +217,8 @@
/*Triangles*/
-static inline void updateTmp(GLContext* c, GLVertex* q, GLVertex* p0, GLVertex* p1, GLfloat t) { //MARK: INLINED_IN_OG
+static inline void updateTmp(GLVertex* q, GLVertex* p0, GLVertex* p1, GLfloat t) { //MARK: INLINED_IN_OG
+ GLContext* c = gl_get_context();
{
@@ -232,12 +234,12 @@
q->clip_code = gl_clipcode(q->pc.X, q->pc.Y, q->pc.Z, q->pc.W);
if (q->clip_code == 0)
- gl_transform_to_viewport_clip_c(c, q);
+ gl_transform_to_viewport_clip_c(q);
}
//DO NOT INLINE!!! DO NOT INLINE!!! DO NOT INLINE!!!
-static void gl_draw_triangle_clip(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2, GLint clip_bit);//MARK: NOT_INLINED_IN_OG
+static void gl_draw_triangle_clip(GLVertex* p0, GLVertex* p1, GLVertex* p2, GLint clip_bit);//MARK: NOT_INLINED_IN_OG
-void gl_draw_triangle(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2) {
+void gl_draw_triangle(GLVertex* p0, GLVertex* p1, GLVertex* p2) {GLContext* c = gl_get_context();
GLint co, cc[3], front;
@@ -264,11 +266,11 @@
if (c->current_cull_face == GL_BACK) {
if (front == 0)
return;
- c->draw_triangle_front(c, p0, p1, p2);
+ c->draw_triangle_front(p0, p1, p2);
} else if (c->current_cull_face == GL_FRONT) {
if (front != 0)
return;
- c->draw_triangle_back(c, p0, p1, p2);
+ c->draw_triangle_back(p0, p1, p2);
} else {
return;
}
@@ -275,21 +277,22 @@
} else {
/* no culling */
if (front) {
- c->draw_triangle_front(c, p0, p1, p2);
+ c->draw_triangle_front(p0, p1, p2);
} else {
- c->draw_triangle_back(c, p0, p1, p2);
+ c->draw_triangle_back(p0, p1, p2);
}
}
} else {
//GLint c_and = cc[0] & cc[1] & cc[2];
if ((cc[0] & cc[1] & cc[2]) == 0) { // Don't draw a triangle with no points
- gl_draw_triangle_clip(c, p0, p1, p2, 0);
+ gl_draw_triangle_clip(p0, p1, p2, 0);
}
}
}
-static void gl_draw_triangle_clip(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2, GLint clip_bit) {
+static void gl_draw_triangle_clip(GLVertex* p0, GLVertex* p1, GLVertex* p2, GLint clip_bit) {
+ //GLContext* c = gl_get_context();
GLint co, c_and, co1, cc[3], edge_flag_tmp, clip_mask;
//GLVertex tmp1, tmp2, *q[3];
GLVertex *q[3];
@@ -301,7 +304,7 @@
co = cc[0] | cc[1] | cc[2];
if (co == 0) {
- gl_draw_triangle(c, p0, p1, p2);
+ gl_draw_triangle(p0, p1, p2);
} else {
c_and = cc[0] & cc[1] & cc[2];
@@ -343,20 +346,20 @@
}
{GLVertex tmp1, tmp2;GLfloat tt;
tt = clip_proc[clip_bit](&tmp1.pc, &q[0]->pc, &q[1]->pc);
- updateTmp(c, &tmp1, q[0], q[1], tt);
+ updateTmp(&tmp1, q[0], q[1], tt);
tt = clip_proc[clip_bit](&tmp2.pc, &q[0]->pc, &q[2]->pc);
- updateTmp(c, &tmp2, q[0], q[2], tt);
+ updateTmp(&tmp2, q[0], q[2], tt);
tmp1.edge_flag = q[0]->edge_flag;
edge_flag_tmp = q[2]->edge_flag;
q[2]->edge_flag = 0;
- gl_draw_triangle_clip(c, &tmp1, q[1], q[2], clip_bit + 1);
+ gl_draw_triangle_clip(&tmp1, q[1], q[2], clip_bit + 1);
tmp2.edge_flag = 1;
tmp1.edge_flag = 0;
q[2]->edge_flag = edge_flag_tmp;
- gl_draw_triangle_clip(c, &tmp2, &tmp1, q[2], clip_bit + 1);
+ gl_draw_triangle_clip(&tmp2, &tmp1, q[2], clip_bit + 1);
}
} else {
/* two points outside */
@@ -376,14 +379,14 @@
}
{GLVertex tmp1, tmp2;GLfloat tt;
tt = clip_proc[clip_bit](&tmp1.pc, &q[0]->pc, &q[1]->pc);
- updateTmp(c, &tmp1, q[0], q[1], tt);
+ updateTmp(&tmp1, q[0], q[1], tt);
tt = clip_proc[clip_bit](&tmp2.pc, &q[0]->pc, &q[2]->pc);
- updateTmp(c, &tmp2, q[0], q[2], tt);
+ updateTmp(&tmp2, q[0], q[2], tt);
tmp1.edge_flag = 1;
tmp2.edge_flag = q[2]->edge_flag;
- gl_draw_triangle_clip(c, q[0], &tmp1, &tmp2, clip_bit + 1);
+ gl_draw_triangle_clip(q[0], &tmp1, &tmp2, clip_bit + 1);
}
}
}
@@ -396,12 +399,13 @@
//see vertex.c to see how the draw functions are assigned.
-void gl_draw_triangle_select(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2) {
- gl_add_select1(c, p0->zp.z, p1->zp.z, p2->zp.z);
+void gl_draw_triangle_select(GLVertex* p0, GLVertex* p1, GLVertex* p2) {
+ gl_add_select1(p0->zp.z, p1->zp.z, p2->zp.z);
}
-void gl_draw_triangle_feedback(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2){
+void gl_draw_triangle_feedback(GLVertex* p0, GLVertex* p1, GLVertex* p2){
+ //GLContext* c = gl_get_context();
gl_add_feedback(
- c, GL_POLYGON_TOKEN,
+ GL_POLYGON_TOKEN,
p0,
p1,
p2,
@@ -415,8 +419,8 @@
#endif
//see vertex.c to see how the draw functions are assigned.
-void gl_draw_triangle_fill(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2) { //Must be function pointer!
-
+void gl_draw_triangle_fill( GLVertex* p0, GLVertex* p1, GLVertex* p2) { //Must be function pointer!
+ GLContext* c = gl_get_context();
if (c->texture_2d_enabled) {
//if(c->current_texture)
#if TGL_FEATURE_LIT_TEXTURES == 1
@@ -468,7 +472,8 @@
/* Render a clipped triangle in line mode */
-void gl_draw_triangle_line(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2) {
+void gl_draw_triangle_line(GLVertex* p0, GLVertex* p1, GLVertex* p2) {
+ GLContext* c = gl_get_context();
if (c->zb->depth_test) {
if (p0->edge_flag)
ZB_line_z(c->zb, &p0->zp, &p1->zp);
@@ -487,7 +492,8 @@
}
/* Render a clipped triangle in point mode */
-void gl_draw_triangle_point(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2) {
+void gl_draw_triangle_point(GLVertex* p0, GLVertex* p1, GLVertex* p2) {
+ GLContext* c = gl_get_context();
if (p0->edge_flag)
ZB_plot(c->zb, &p0->zp);
if (p1->edge_flag)
--- a/src/init.c
+++ b/src/init.c
@@ -14,7 +14,7 @@
s->buffers = gl_zalloc(sizeof(GLBuffer*) * MAX_BUFFERS);
if(!s->buffers)
gl_fatal_error("TINYGL_CANNOT_INIT_OOM");
- alloc_texture(c, 0);
+ alloc_texture(0);
#include "error_check.h"
}
--- a/src/light.c
+++ b/src/light.c
@@ -3,7 +3,8 @@
-void glopMaterial(GLContext* c, GLParam* p) {
+void glopMaterial(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint mode = p[1].i;
GLint type = p[2].i;
GLfloat v[4];
@@ -16,7 +17,7 @@
if (mode == GL_FRONT_AND_BACK) {
p[1].i = GL_FRONT;
- glopMaterial(c, p);
+ glopMaterial(p);
mode = GL_BACK;
}
if (mode == GL_FRONT)
@@ -65,7 +66,8 @@
}
}
-void glopColorMaterial(GLContext* c, GLParam* p) {
+void glopColorMaterial(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint mode = p[1].i;
GLint type = p[2].i;
@@ -73,7 +75,8 @@
c->current_color_material_type = type;
}
-void glopLight(GLContext* c, GLParam* p) {
+void glopLight(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint light = p[1].i;
GLint type = p[2].i;
V4 v;
@@ -167,7 +170,8 @@
}
}
-void glopLightModel(GLContext* c, GLParam* p) {
+void glopLightModel( GLParam* p) {
+ GLContext* c = gl_get_context();
GLint pname = p[1].i;
GLint* v = &p[2].i;
GLint i;
@@ -196,7 +200,8 @@
-void gl_enable_disable_light(GLContext* c, GLint light, GLint v) {
+void gl_enable_disable_light(GLint light, GLint v) {
+ GLContext* c = gl_get_context();
GLLight* l = &c->lights[light];
if (v && !l->enabled) {
l->enabled = 1;
@@ -221,7 +226,8 @@
gl_get_context()->zEnableSpecular = s;
}
/* non optimized lightening model */
-void gl_shade_vertex(GLContext* c, GLVertex* v) {
+void gl_shade_vertex(GLVertex* v) {
+ GLContext* c = gl_get_context();
GLfloat R, G, B, A;
GLMaterial* m;
GLLight* l;
--- a/src/list.c
+++ b/src/list.c
@@ -8,7 +8,8 @@
#include "opinfo.h"
};
*/
-void (*op_table_func[])(GLContext*, GLParam*) = {
+//void (*op_table_func[])(GLContext*, GLParam*)
+void (*op_table_func[])(GLParam*) = {
#define ADD_OP(a, b, c) glop##a,
#include "opinfo.h"
@@ -22,13 +23,14 @@
-static inline GLList* find_list(GLContext* c, GLuint list) { return c->shared_state.lists[list]; }
+static inline GLList* find_list(GLuint list) { return gl_get_context()->shared_state.lists[list]; }
-static void delete_list(GLContext* c, GLint list) {
+static void delete_list( GLint list) {
+ GLContext* c = gl_get_context();
GLParamBuffer *pb, *pb1;
GLList* l;
- l = find_list(c, list);
+ l = find_list(list);
if (l == NULL) { //MARK <COST>
return;
}
@@ -52,10 +54,11 @@
}
void glDeleteList(GLuint list) {
#include "error_check_no_context.h"
-delete_list(gl_get_context(), list);
+delete_list( list);
}
-static GLList* alloc_list(GLContext* c, GLint list) {
+static GLList* alloc_list( GLint list) {
+ GLContext* c = gl_get_context();
GLList* l;
GLParamBuffer* ob;
#define RETVAL NULL
@@ -131,7 +134,8 @@
for(GLint i = 0; i < n; i++)
glCallList(c->listbase + lists[i]);
}
-void gl_compile_op(GLContext* c, GLParam* p) {
+void gl_compile_op(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint op, op_size;
GLParamBuffer *ob, *ob1;
GLint index, i;
@@ -172,17 +176,18 @@
c->current_op_buffer_index = index;
}
/* this opcode is never called directly */
-void glopEndList(GLContext* c, GLParam* p) { exit(1); }
+void glopEndList(GLParam* p) { exit(1); }
/* this opcode is never called directly */
-void glopNextBuffer(GLContext* c, GLParam* p) { exit(1); }
+void glopNextBuffer(GLParam* p) { exit(1); }
-void glopCallList(GLContext* c, GLParam* p) {
+void glopCallList(GLParam* p) {
+ //GLContext* c = gl_get_context();
GLList* l;
GLint list;
#include "error_check.h"
list = p[1].ui;
- l = find_list(c, list);
+ l = find_list(list);
#if TGL_FEATURE_ERROR_CHECK == 1
if (l == NULL) {gl_fatal_error("Bad list op, not defined");}
@@ -199,7 +204,7 @@
if (op == OP_NextBuffer) {
p = (GLParam*)p[1].p;
} else {
- op_table_func[op](c, p);
+ op_table_func[op](p);
p += op_table_size[op];
}
}
@@ -224,9 +229,9 @@
//assert(mode == GL_COMPILE || mode == GL_COMPILE_AND_EXECUTE); //MARK <COST>
//assert(c->compile_flag == 0); //MARK <COST>
#endif
- l = find_list(c, list);
- if (l != NULL) delete_list(c, list);
- l = alloc_list(c, list);
+ l = find_list(list);
+ if (l != NULL) delete_list(list);
+ l = alloc_list(list);
#include "error_check.h"
#if TGL_FEATURE_ERROR_CHECK == 1
if(l==NULL)
@@ -257,7 +262,7 @@
#endif
/* end of list */
p[0].op = OP_EndList;
- gl_compile_op(c, p);
+ gl_compile_op(p);
c->compile_flag = 0;
c->exec_flag = 1;
@@ -264,9 +269,9 @@
}
GLint glIsList(GLuint list) {
- GLContext* c = gl_get_context();
+ //GLContext* c = gl_get_context();
GLList* l;
- l = find_list(c, list);
+ l = find_list(list);
return (l != NULL);
}
@@ -284,7 +289,7 @@
if (count == range) {
list = i - range + 1;
for (i = 0; i < range; i++) {
- alloc_list(c, list + i);
+ alloc_list(list + i);
}
return list;
}
--- a/src/matrix.c
+++ b/src/matrix.c
@@ -8,9 +8,10 @@
}
}
-static inline void gl_matrix_update(GLContext* c) { c->matrix_model_projection_updated = (c->matrix_mode <= 1); }
+static inline void gl_matrix_update() { GLContext* c = gl_get_context(); c->matrix_model_projection_updated = (c->matrix_mode <= 1); }
-void glopMatrixMode(GLContext* c, GLParam* p) {
+void glopMatrixMode( GLParam* p) {
+ GLContext* c = gl_get_context();
GLint mode = p[1].i;
switch (mode) {
case GL_MODELVIEW:
@@ -27,7 +28,8 @@
}
}
-void glopLoadMatrix(GLContext* c, GLParam* p) {
+void glopLoadMatrix(GLParam* p) {
+ GLContext* c = gl_get_context();
M4* m;
GLint i;
@@ -47,7 +49,8 @@
gl_matrix_update(c);
}
-void glopLoadIdentity(GLContext* c, GLParam* p) {
+void glopLoadIdentity(GLParam* p) {
+ GLContext* c = gl_get_context();
gl_M4_Id(c->matrix_stack_ptr[c->matrix_mode]);
@@ -54,7 +57,8 @@
gl_matrix_update(c);
}
-void glopMultMatrix(GLContext* c, GLParam* p) {
+void glopMultMatrix(GLParam* p) {
+ GLContext* c = gl_get_context();
M4 m;
GLint i;
@@ -74,7 +78,8 @@
gl_matrix_update(c);
}
-void glopPushMatrix(GLContext* c, GLParam* p) {
+void glopPushMatrix( GLParam* p) {
+ GLContext* c = gl_get_context();
GLint n = c->matrix_mode;
M4* m;
@@ -91,7 +96,8 @@
gl_matrix_update(c);
}
-void glopPopMatrix(GLContext* c, GLParam* p) {
+void glopPopMatrix( GLParam* p) {
+ GLContext* c = gl_get_context();
GLint n = c->matrix_mode;
//assert(c->matrix_stack_ptr[n] > c->matrix_stack[n]);
@@ -107,7 +113,8 @@
-void glopRotate(GLContext* c, GLParam* p) {
+void glopRotate(GLParam* p) {
+ GLContext* c = gl_get_context();
M4 m;
GLfloat u[3];
GLfloat angle;
@@ -185,7 +192,8 @@
gl_matrix_update(c);
}
-void glopScale(GLContext* c, GLParam* p) {
+void glopScale(GLParam* p) {
+ GLContext* c = gl_get_context();
GLfloat* m;
GLfloat x = p[1].f, y = p[2].f, z = p[3].f;
@@ -206,7 +214,8 @@
gl_matrix_update(c);
}
-void glopTranslate(GLContext* c, GLParam* p) {
+void glopTranslate(GLParam* p) {
+ GLContext* c = gl_get_context();
GLfloat* m;
GLfloat x = p[1].f, y = p[2].f, z = p[3].f;
@@ -220,7 +229,8 @@
gl_matrix_update(c);
}
-void glopFrustum(GLContext* c, GLParam* p) {
+void glopFrustum(GLParam* p) {
+ GLContext* c = gl_get_context();
GLfloat* r;
M4 m;
GLfloat left = p[1].f;
--- a/src/misc.c
+++ b/src/misc.c
@@ -14,7 +14,8 @@
#endif
}
-void glopViewport(GLContext* c, GLParam* p) {
+void glopViewport( GLParam* p) {
+ GLContext* c = gl_get_context();
GLint xsize, ysize,
xmin, ymin,
xsize_req, ysize_req;
@@ -31,7 +32,7 @@
xsize_req = xmin + xsize;
ysize_req = ymin + ysize;
- if (c->gl_resize_viewport && c->gl_resize_viewport(c, &xsize_req, &ysize_req) != 0) {
+ if (c->gl_resize_viewport && c->gl_resize_viewport(&xsize_req, &ysize_req) != 0) {
gl_fatal_error("glViewport: error while resizing display");
}
if (xsize <= 0 || ysize <= 0) {
@@ -56,7 +57,8 @@
gl_add_op(p);
return;
}
-void glopBlendFunc(GLContext* c, GLParam* p) {
+void glopBlendFunc( GLParam* p) {
+ GLContext* c = gl_get_context();
c->zb->sfactor = p[1].i;
c->zb->dfactor = p[2].i;
}
@@ -69,9 +71,10 @@
p[1].i = mode;
gl_add_op(p);
}
-void glopBlendEquation(GLContext* c, GLParam* p) { c->zb->blendeq = p[1].i; }
+void glopBlendEquation(GLParam* p) {GLContext* c = gl_get_context(); c->zb->blendeq = p[1].i; }
-void glopPointSize(GLContext* c, GLParam* p){
+void glopPointSize(GLParam* p){
+ GLContext* c = gl_get_context();
c->zb->pointsize = p[1].f;
}
void glPointSize(GLfloat f){
@@ -81,7 +84,8 @@
gl_add_op(p);
}
-void glopEnableDisable(GLContext* c, GLParam* p) {
+void glopEnableDisable(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint code = p[1].i;
GLint v = p[2].i;
@@ -132,7 +136,7 @@
break;
default:
if (code >= GL_LIGHT0 && code < GL_LIGHT0 + MAX_LIGHTS) {
- gl_enable_disable_light(c, code - GL_LIGHT0, v);
+ gl_enable_disable_light(code - GL_LIGHT0, v);
} else {
tgl_warning("glEnableDisable: 0x%X not supported.\n",code);
}
@@ -140,22 +144,26 @@
}
}
-void glopShadeModel(GLContext* c, GLParam* p) {
+void glopShadeModel(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint code = p[1].i;
c->current_shade_model = code;
}
-void glopCullFace(GLContext* c, GLParam* p) {
+void glopCullFace(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint code = p[1].i;
c->current_cull_face = code;
}
-void glopFrontFace(GLContext* c, GLParam* p) {
+void glopFrontFace(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint code = p[1].i;
c->current_front_face = code;
}
-void glopPolygonMode(GLContext* c, GLParam* p) {
+void glopPolygonMode(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint face = p[1].i;
GLint mode = p[2].i;
@@ -175,7 +183,8 @@
}
-void glopPolygonOffset(GLContext* c, GLParam* p) {
+void glopPolygonOffset( GLParam* p) {
+ GLContext* c = gl_get_context();
c->offset_factor = p[1].f;
c->offset_units = p[2].f;
}
@@ -224,7 +233,7 @@
c->readbuffer = mode;
}
-//Only ever reads pixels from the depth buffer
+//TODO
void glReadPixels( GLint x,
GLint y,
GLsizei width,
@@ -252,7 +261,7 @@
return;
#endif
}
-
+ //TODO: implement read pixels.
}
void glFinish(){
--- a/src/select.c
+++ b/src/select.c
@@ -118,12 +118,12 @@
c->feedback_type = type;
}
-void gl_add_feedback(GLContext* c, GLfloat token,
+void gl_add_feedback(GLfloat token,
GLVertex* v1,
GLVertex* v2,
GLVertex* v3,
GLfloat passthrough_token_value
-){
+){GLContext* c = gl_get_context();
if(c->feedback_overflow) return;
GLuint feedback_hits_needed = 2;
GLuint vertex_feedback_hits_needed = 0;
@@ -237,11 +237,12 @@
return;
}
void glPassThrough(GLfloat token){
-GLContext* c = gl_get_context();
-#include "error_check.h"
- gl_add_feedback(c,GL_PASS_THROUGH_TOKEN,NULL,NULL,NULL,token);
+//GLContext* c = gl_get_context(); //needed for error check.
+#include "error_check_no_context.h"
+ gl_add_feedback(GL_PASS_THROUGH_TOKEN,NULL,NULL,NULL,token);
}
-void glopInitNames(GLContext* c, GLParam* p) {
+void glopInitNames(GLParam* p) {
+ GLContext* c = gl_get_context();
if (c->render_mode == GL_SELECT) {
c->name_stack_size = 0;
c->select_hit = NULL;
@@ -248,7 +249,8 @@
}
}
-void glopPushName(GLContext* c, GLParam* p) {
+void glopPushName(GLParam* p) {
+ GLContext* c = gl_get_context();
if (c->render_mode == GL_SELECT) {
//assert(c->name_stack_size < MAX_NAME_STACK_DEPTH);
c->name_stack[c->name_stack_size++] = p[1].i;
@@ -261,7 +263,8 @@
-void glopPopName(GLContext* c, GLParam* p) {
+void glopPopName(GLParam* p) {
+ GLContext* c = gl_get_context();
if (c->render_mode == GL_SELECT) {
//assert(c->name_stack_size > 0);
c->name_stack_size--;
@@ -269,7 +272,8 @@
}
}
-void glopLoadName(GLContext* c, GLParam* p) {
+void glopLoadName(GLParam* p) {
+ GLContext* c = gl_get_context();
if (c->render_mode == GL_SELECT) {
//assert(c->name_stack_size > 0);
c->name_stack[c->name_stack_size - 1] = p[1].i;
@@ -277,7 +281,8 @@
}
}
-void gl_add_select(GLContext* c, GLuint zmin, GLuint zmax) {
+void gl_add_select(GLuint zmin, GLuint zmax) {
+ GLContext* c = gl_get_context();
GLuint* ptr;
GLint n, i;
--- a/src/texture.c
+++ b/src/texture.c
@@ -4,7 +4,8 @@
#include "zgl.h"
-static GLTexture* find_texture(GLContext* c, GLint h) {
+static GLTexture* find_texture(GLint h) {
+ GLContext* c = gl_get_context();
GLTexture* t;
t = c->shared_state.texture_hash_table[h & TEXTURE_HASH_TABLE_MASK];
while (t != NULL) {
@@ -18,12 +19,12 @@
GLboolean glAreTexturesResident( GLsizei n,
const GLuint * textures,
GLboolean * residences){
-GLContext* c = gl_get_context();
+//GLContext* c = gl_get_context();
#define RETVAL GL_FALSE
#include "error_check.h"
GLboolean retval = GL_TRUE;
for(GLint i = 0; i < n; i++)
- if(find_texture(c, textures[i]))
+ if(find_texture(textures[i]))
{residences[i] = GL_TRUE;}
else
{residences[i] = GL_FALSE;retval = GL_FALSE;}
@@ -33,7 +34,7 @@
GLContext* c = gl_get_context();
#define RETVAL GL_FALSE
#include "error_check.h"
- if(find_texture(c, texture))
+ if(find_texture(texture))
return GL_TRUE;
return GL_FALSE;
}
@@ -49,7 +50,7 @@
#else
//assert(text >= 0 && level < MAX_TEXTURE_LEVELS);
#endif
- tex = find_texture(c, text);
+ tex = find_texture(text);
if (!tex)
#if TGL_FEATURE_ERROR_CHECK == 1
#define ERROR_FLAG GL_INVALID_ENUM
@@ -66,7 +67,7 @@
static void free_texture(GLContext* c, GLint h) {
GLTexture *t, **ht;
- t = find_texture(c, h);
+ t = find_texture(h);
if (t->prev == NULL) {
ht = &c->shared_state.texture_hash_table[t->handle & TEXTURE_HASH_TABLE_MASK];
*ht = t->next;
@@ -85,7 +86,8 @@
gl_free(t);
}
-GLTexture* alloc_texture(GLContext* c, GLint h) {
+GLTexture* alloc_texture(GLint h) {
+ GLContext* c = gl_get_context();
GLTexture *t, **ht;
#define RETVAL NULL
#include "error_check.h"
@@ -112,11 +114,11 @@
return t;
}
-void glInitTextures(GLContext* c) {
+void glInitTextures() {
/* textures */
-
+ GLContext* c = gl_get_context();
c->texture_2d_enabled = 0;
- c->current_texture = find_texture(c, 0);
+ c->current_texture = find_texture(0);
}
void glGenTextures(GLint n, GLuint* textures) {
@@ -145,7 +147,7 @@
#include "error_check.h"
for (i = 0; i < n; i++) {
- t = find_texture(c, textures[i]);
+ t = find_texture(textures[i]);
if (t != NULL && t != 0) {
if (t == c->current_texture) {
glBindTexture(GL_TEXTURE_2D, 0);
@@ -156,7 +158,8 @@
}
}
-void glopBindTexture(GLContext* c, GLParam* p) {
+void glopBindTexture(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint target = p[1].i;
GLint texture = p[2].i;
GLTexture* t;
@@ -167,9 +170,9 @@
#else
//assert(target == GL_TEXTURE_2D && target > 0);
#endif
- t = find_texture(c, texture);
+ t = find_texture(texture);
if (t == NULL) {
- t = alloc_texture(c, texture);
+ t = alloc_texture(texture);
#include "error_check.h"
}
if(t == NULL) { //Failed malloc.
@@ -196,8 +199,8 @@
GLsizei height,
GLint border)
{
- GLContext* c = gl_get_context();
-#include "error_check.h"
+ //GLContext* c = gl_get_context();
+#include "error_check_no_context.h"
GLParam p[9];
p[0].op = OP_CopyTexImage2D;
p[1].i = target;
@@ -210,7 +213,8 @@
p[8].i = border;
gl_add_op(p);
}
-void glopCopyTexImage2D(GLContext* c, GLParam* p){
+void glopCopyTexImage2D(GLParam* p){
+ GLContext* c = gl_get_context();
GLint target = p[1].i;
GLint level = p[2].i;
//GLenum internalformat = p[3].i;
@@ -258,7 +262,7 @@
#endif
}
-void glopTexImage1D(GLContext* c, GLParam* p){
+void glopTexImage1D( GLParam* p){
GLint target = p[1].i;
GLint level = p[2].i;
GLint components = p[3].i;
@@ -272,16 +276,16 @@
GLImage* im;
GLubyte* pixels1;
GLint do_free;
-
+ GLContext* c = gl_get_context();
{
#if TGL_FEATURE_ERROR_CHECK == 1
- if (!(c->current_texture != NULL && target == GL_TEXTURE_1D && level == 0 && components == 3 && border == 0 && format == GL_RGB && type == GL_UNSIGNED_BYTE))
+ if (!(c->current_texture != NULL && target == GL_TEXTURE_1D && level == 0 && components == 3 && border == 0 && format == GL_RGB && type == GL_UNSIGNED_BYTE))
#define ERROR_FLAG GL_INVALID_ENUM
#include "error_check.h"
#else
- if (!(c->current_texture != NULL && target == GL_TEXTURE_1D && level == 0 && components == 3 && border == 0 && format == GL_RGB && type == GL_UNSIGNED_BYTE))
- gl_fatal_error("glTexImage2D: combination of parameters not handled!!");
+ if (!(c->current_texture != NULL && target == GL_TEXTURE_1D && level == 0 && components == 3 && border == 0 && format == GL_RGB && type == GL_UNSIGNED_BYTE))
+ gl_fatal_error("glTexImage2D: combination of parameters not handled!!");
#endif
}
if (width != TGL_FEATURE_TEXTURE_DIM || height != TGL_FEATURE_TEXTURE_DIM) {
@@ -319,7 +323,7 @@
if (do_free)
gl_free(pixels1);
}
-void glopTexImage2D(GLContext* c, GLParam* p) {
+void glopTexImage2D(GLParam* p) {
GLint target = p[1].i;
GLint level = p[2].i;
GLint components = p[3].i;
@@ -332,7 +336,7 @@
GLImage* im;
GLubyte* pixels1;
GLint do_free;
-
+ GLContext* c = gl_get_context();
{
#if TGL_FEATURE_ERROR_CHECK == 1
if (!(c->current_texture != NULL && target == GL_TEXTURE_2D && level == 0 && components == 3 && border == 0 && format == GL_RGB && type == GL_UNSIGNED_BYTE))
--- a/src/vertex.c
+++ b/src/vertex.c
@@ -1,8 +1,8 @@
#include "zgl.h"
#include <string.h>
-void glopNormal(GLContext* c, GLParam* p) {
+void glopNormal(GLParam* p) {
V3 v;
-
+ GLContext* c = gl_get_context();
v.X = p[1].f;
v.Y = p[2].f;
v.Z = p[3].f;
@@ -13,7 +13,8 @@
c->current_normal.W = 0;
}
-void glopTexCoord(GLContext* c, GLParam* p) {
+void glopTexCoord( GLParam* p) {
+ GLContext* c = gl_get_context();
c->current_tex_coord.X = p[1].f;
c->current_tex_coord.Y = p[2].f;
c->current_tex_coord.Z = p[3].f;
@@ -20,10 +21,10 @@
c->current_tex_coord.W = p[4].f;
}
-void glopEdgeFlag(GLContext* c, GLParam* p) { c->current_edge_flag = p[1].i; }
+void glopEdgeFlag(GLParam* p) {GLContext* c = gl_get_context(); c->current_edge_flag = p[1].i; }
-void glopColor(GLContext* c, GLParam* p) {
-
+void glopColor(GLParam* p) {
+ GLContext* c = gl_get_context();
c->current_color.X = p[1].f;
c->current_color.Y = p[2].f;
c->current_color.Z = p[3].f;
@@ -38,11 +39,12 @@
q[4].f = p[2].f;
q[5].f = p[3].f;
q[6].f = p[4].f;
- glopMaterial(c, q);
+ glopMaterial(q);
}
}
-void gl_eval_viewport(GLContext* c) {
+void gl_eval_viewport() {
+ GLContext* c = gl_get_context();
GLViewport* v;
GLfloat zsize = (1 << (ZB_Z_BITS + ZB_POINT_Z_FRAC_BITS));
@@ -57,7 +59,8 @@
v->scale.Z = -((zsize - 0.5) / 2.0);
}
-void glopBegin(GLContext* c, GLParam* p) {
+void glopBegin(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint type;
M4 tmp;
#if TGL_FEATURE_ERROR_CHECK == 1
@@ -134,7 +137,8 @@
}
}
-static inline void gl_transform_to_viewport_vertex_c(GLContext* c, GLVertex* v) {
+static inline void gl_transform_to_viewport_vertex_c(GLVertex* v) {
+ GLContext* c = gl_get_context();
{
@@ -156,9 +160,9 @@
}
}
-static inline void gl_vertex_transform(GLContext* c, GLVertex* v) {
+static inline void gl_vertex_transform(GLVertex* v) {
GLfloat* m;
-
+ GLContext* c = gl_get_context();
if (c->lighting_enabled) {
/* eye coordinates needed for lighting */
@@ -204,10 +208,10 @@
v->clip_code = gl_clipcode(v->pc.X, v->pc.Y, v->pc.Z, v->pc.W);
}
-void glopVertex(GLContext* c, GLParam* p) {
+void glopVertex(GLParam* p) {
GLVertex* v;
GLint n, i, cnt;
-
+ GLContext* c = gl_get_context();
#if TGL_FEATURE_ERROR_CHECK == 1
if(c->in_begin == 0)
#define ERROR_FLAG GL_INVALID_OPERATION
@@ -248,12 +252,12 @@
v->coord.Z = p[3].f;
v->coord.W = p[4].f;
- gl_vertex_transform(c, v);
+ gl_vertex_transform( v);
/* color */
if (c->lighting_enabled) {
- gl_shade_vertex(c, v);
+ gl_shade_vertex(v);
#include "error_check.h"
//^ Don't proceed on an OUT OF MEMORY error.
} else {
@@ -274,7 +278,7 @@
}
/* precompute the mapping to the viewport */
if (v->clip_code == 0)
- gl_transform_to_viewport_vertex_c(c, v);
+ gl_transform_to_viewport_vertex_c(v);
/* edge flag */
v->edge_flag = c->current_edge_flag;
@@ -281,13 +285,13 @@
switch (c->begin_type) {
case GL_POINTS:
- gl_draw_point(c, &c->vertex[0]);
+ gl_draw_point(&c->vertex[0]);
n = 0;
break;
case GL_LINES:
if (n == 2) {
- gl_draw_line(c, &c->vertex[0], &c->vertex[1]);
+ gl_draw_line(&c->vertex[0], &c->vertex[1]);
n = 0;
}
break;
@@ -301,7 +305,7 @@
break;
case 2:
{
- gl_draw_line(c, &c->vertex[0], &c->vertex[1]);
+ gl_draw_line(&c->vertex[0], &c->vertex[1]);
c->vertex[0] = c->vertex[1];
n = 1;
}
@@ -312,7 +316,7 @@
break;
case GL_TRIANGLES:
if (n == 3) {
- gl_draw_triangle(c, &c->vertex[0], &c->vertex[1], &c->vertex[2]);
+ gl_draw_triangle(&c->vertex[0], &c->vertex[1], &c->vertex[2]);
n = 0;
}
break;
@@ -323,11 +327,11 @@
/* needed to respect triangle orientation */
switch (cnt & 1) {
case 0:
- gl_draw_triangle(c, &c->vertex[2], &c->vertex[1], &c->vertex[0]);
+ gl_draw_triangle(&c->vertex[2], &c->vertex[1], &c->vertex[0]);
break;
default:
case 1:
- gl_draw_triangle(c, &c->vertex[0], &c->vertex[1], &c->vertex[2]);
+ gl_draw_triangle(&c->vertex[0], &c->vertex[1], &c->vertex[2]);
break;
}
}
@@ -334,7 +338,7 @@
break;
case GL_TRIANGLE_FAN:
if (n == 3) {
- gl_draw_triangle(c, &c->vertex[0], &c->vertex[1], &c->vertex[2]);
+ gl_draw_triangle(&c->vertex[0], &c->vertex[1], &c->vertex[2]);
c->vertex[1] = c->vertex[2];
n = 2;
}
@@ -343,10 +347,10 @@
case GL_QUADS:
if (n == 4) {
c->vertex[2].edge_flag = 0;
- gl_draw_triangle(c, &c->vertex[0], &c->vertex[1], &c->vertex[2]);
+ gl_draw_triangle(&c->vertex[0], &c->vertex[1], &c->vertex[2]);
c->vertex[2].edge_flag = 1;
c->vertex[0].edge_flag = 0;
- gl_draw_triangle(c, &c->vertex[0], &c->vertex[2], &c->vertex[3]);
+ gl_draw_triangle(&c->vertex[0], &c->vertex[2], &c->vertex[3]);
n = 0;
}
break;
@@ -353,8 +357,8 @@
case GL_QUAD_STRIP:
if (n == 4) {
- gl_draw_triangle(c, &c->vertex[0], &c->vertex[1], &c->vertex[2]);
- gl_draw_triangle(c, &c->vertex[1], &c->vertex[3], &c->vertex[2]);
+ gl_draw_triangle(&c->vertex[0], &c->vertex[1], &c->vertex[2]);
+ gl_draw_triangle(&c->vertex[1], &c->vertex[3], &c->vertex[2]);
for (i = 0; i < 2; i++)
c->vertex[i] = c->vertex[i + 2];
n = 2;
@@ -375,7 +379,8 @@
c->vertex_n = n;
}
-void glopEnd(GLContext* c, GLParam* param) {
+void glopEnd(GLParam* param) {
+ GLContext* c = gl_get_context();
#if TGL_FEATURE_ERROR_CHECK == 1
if(c->in_begin != 1)
#define ERROR_FLAG GL_INVALID_OPERATION
@@ -387,7 +392,7 @@
//#if TGL_FEATURE_GL_POLYGON == 1
if (c->begin_type == GL_LINE_LOOP) {
if (c->vertex_cnt >= 3) {
- gl_draw_line(c, &c->vertex[0], &c->vertex[2]);
+ gl_draw_line(&c->vertex[0], &c->vertex[2]);
}
}
//#endif
@@ -396,7 +401,7 @@
GLint i = c->vertex_cnt;
while (i >= 3) {
i--;
- gl_draw_triangle(c, &c->vertex[i], &c->vertex[0], &c->vertex[i - 1]);
+ gl_draw_triangle(&c->vertex[i], &c->vertex[0], &c->vertex[i - 1]);
}
}
#endif
--- a/src/zgl.h
+++ b/src/zgl.h
@@ -169,7 +169,7 @@
struct GLContext;
-typedef void (*gl_draw_triangle_func)(struct GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2);
+typedef void (*gl_draw_triangle_func)(GLVertex* p0, GLVertex* p1, GLVertex* p2);
/* display context */
@@ -305,7 +305,7 @@
/* opaque structure for user's use */
void* opaque;
/* resize viewport function */
- GLint (*gl_resize_viewport)(struct GLContext* c, GLint* xsize, GLint* ysize);
+ GLint (*gl_resize_viewport)(GLint* xsize, GLint* ysize);
/* depth test */
//Moved to Zbuffer.
@@ -330,9 +330,9 @@
extern GLContext gl_ctx;
static inline GLContext* gl_get_context(void) { return &gl_ctx; }
//void gl_add_op(GLParam* p);
-extern void (*op_table_func[])(GLContext*, GLParam*);
+extern void (*op_table_func[])(GLParam*);
extern GLint op_table_size[];
-extern void gl_compile_op(GLContext* c, GLParam* p);
+extern void gl_compile_op(GLParam* p);
static inline void gl_add_op(GLParam* p) {
GLContext* c = gl_get_context();
#if TGL_FEATURE_ERROR_CHECK == 1
@@ -341,13 +341,13 @@
GLint op;
op = p[0].op;
if (c->exec_flag) {
- op_table_func[op](c, p);
+ op_table_func[op](p);
#if TGL_FEATURE_ERROR_CHECK == 1
#include "error_check.h"
#endif
}
if (c->compile_flag) {
- gl_compile_op(c, p);
+ gl_compile_op( p);
#if TGL_FEATURE_ERROR_CHECK == 1
#include "error_check.h"
#endif
@@ -358,8 +358,8 @@
}
/* select.c */
-void gl_add_select(GLContext* c, GLuint zmin, GLuint zmax);
-void gl_add_feedback(GLContext* c, GLfloat token,
+void gl_add_select( GLuint zmin, GLuint zmax);
+void gl_add_feedback( GLfloat token,
GLVertex* v1,
GLVertex* v2,
GLVertex* v3,
@@ -394,8 +394,8 @@
}
-//void gl_transform_to_viewport(GLContext* c, GLVertex* v);
-//inline void gl_draw_triangle(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2);
+//void gl_transform_to_viewport( GLVertex* v);
+//inline void gl_draw_triangle( GLVertex* p0, GLVertex* p1, GLVertex* p2);
/* triangle */
@@ -410,33 +410,33 @@
-//inline void gl_draw_triangle_clip(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2, GLint clip_bit);
+//inline void gl_draw_triangle_clip( GLVertex* p0, GLVertex* p1, GLVertex* p2, GLint clip_bit);
-void gl_draw_triangle(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2);
-void gl_draw_line(GLContext* c, GLVertex* p0, GLVertex* p1);
-void gl_draw_point(GLContext* c, GLVertex* p0);
+void gl_draw_triangle( GLVertex* p0, GLVertex* p1, GLVertex* p2);
+void gl_draw_line( GLVertex* p0, GLVertex* p1);
+void gl_draw_point( GLVertex* p0);
-void gl_draw_triangle_point(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
-void gl_draw_triangle_line(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
-void gl_draw_triangle_fill(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
-void gl_draw_triangle_select(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
-void gl_draw_triangle_feedback(GLContext* c, GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
+void gl_draw_triangle_point( GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
+void gl_draw_triangle_line( GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
+void gl_draw_triangle_fill( GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
+void gl_draw_triangle_select( GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
+void gl_draw_triangle_feedback( GLVertex* p0, GLVertex* p1, GLVertex* p2); //MUST BE FUNCTION POINTER
/* matrix.c */
void gl_print_matrix(const GLfloat* m);
/*
-void glopLoadIdentity(GLContext *c,GLParam *p);
-void glopTranslate(GLContext *c,GLParam *p);*/
+void glopLoadIdentity(GLParam *p);
+void glopTranslate(GLParam *p);*/
/* light.c */
-void gl_enable_disable_light(GLContext* c, GLint light, GLint v);
-void gl_shade_vertex(GLContext* c, GLVertex* v);
+void gl_enable_disable_light( GLint light, GLint v);
+void gl_shade_vertex(GLVertex* v);
-void glInitTextures(GLContext* c);
-void glEndTextures(GLContext* c);
-GLTexture* alloc_texture(GLContext* c, GLint h);
+void glInitTextures();
+void glEndTextures();
+GLTexture* alloc_texture( GLint h);
/* image_util.c */
void gl_convertRGB_to_5R6G5B(GLushort* pixmap, GLubyte* rgb, GLint xsize, GLint ysize);
@@ -449,7 +449,7 @@
void gl_fatal_error(char* format, ...);
/* specular buffer "api" */
-GLSpecBuf* specbuf_get_buffer(GLContext* c, const GLint shininess_i, const GLfloat shininess);
+GLSpecBuf* specbuf_get_buffer( const GLint shininess_i, const GLfloat shininess);
#ifdef __BEOS__
void dprintf(const char*, ...);
@@ -469,7 +469,7 @@
/* glopXXX functions */
-#define ADD_OP(a, b, c) void glop##a(GLContext*, GLParam*);
+#define ADD_OP(a, b, c) void glop##a(GLParam*);
#include "opinfo.h"
/* this clip epsilon is needed to avoid some rounding errors after
--- a/src/zraster.c
+++ b/src/zraster.c
@@ -3,7 +3,8 @@
#include "zgl.h"
#include "msghandling.h"
-static inline void gl_vertex_transform_raster(GLContext* c, GLVertex* v) {
+static inline void gl_vertex_transform_raster(GLVertex* v) {
+ GLContext* c = gl_get_context();
{
/* no eye coordinates needed, no normal */
@@ -40,13 +41,14 @@
p[4].f = w;
gl_add_op(p);
}
-void glopRasterPos(GLContext* c, GLParam* p){
+void glopRasterPos(GLParam* p){
+ GLContext* c = gl_get_context();
GLVertex v;
v.coord.X = p[1].f;
v.coord.Y = p[2].f;
v.coord.Z = p[3].f;
v.coord.W = p[4].f;
- gl_vertex_transform_raster(c, &v);
+ gl_vertex_transform_raster(&v);
if (v.clip_code == 0)
{
{
@@ -107,7 +109,8 @@
}
#define ZCMP(z, zpix) (!(zbdt) || z >= (zpix))
#define CLIPTEST(_x,_y,_w,_h)((0<=_x) && (_w>_x) && (0<=_y) && (_h>_y))
-void glopDrawPixels(GLContext* c, GLParam* p){
+void glopDrawPixels(GLParam* p){
+ GLContext* c = gl_get_context();
// p[3]
if(!c->rasterposvalid) return;
GLint w = p[1].i;
@@ -137,11 +140,11 @@
#endif
//Looping over the source pixels.
if(c->render_mode == GL_SELECT){
- gl_add_select(c, zz, zz);
+ gl_add_select( zz, zz);
return;
} else if(c->render_mode == GL_FEEDBACK){
gl_add_feedback(
- c, GL_DRAW_PIXEL_TOKEN,
+ GL_DRAW_PIXEL_TOKEN,
&(c->rastervertex),
NULL,
NULL,
@@ -235,7 +238,8 @@
gl_add_op(p);
}
-void glopPixelZoom(GLContext* c, GLParam* p){
+void glopPixelZoom(GLParam* p){
+ GLContext* c = gl_get_context();
c->pzoomx = p[1].f;
c->pzoomy = p[2].f;
}
--- a/src/ztext.c
+++ b/src/ztext.c
@@ -21,7 +21,7 @@
p[1].ui = mode;
gl_add_op(p);
}
-void glopTextSize(GLContext* c, GLParam* p) { c->textsize = p[1].ui; } // Set text size
+void glopTextSize(GLParam* p) { GLContext* c = gl_get_context(); c->textsize = p[1].ui; } // Set text size
void renderchar(GLbyte* bitmap, GLint _x, GLint _y, GLuint p) {
GLint x, y;
GLint set;
@@ -38,7 +38,8 @@
}
}
-void glopPlotPixel(GLContext* c, GLParam* p) {
+void glopPlotPixel(GLParam* p) {
+ GLContext* c = gl_get_context();
GLint x = p[1].i;
PIXEL pix = p[2].ui;;
/*