ref: 3aaf17bc54e0ab5bc103036d016a76283c371517
dir: /src/get.c/
#include "zgl.h" #include "msghandling.h" void glGetIntegerv(GLint pname, GLint* params) { GLContext* c = gl_get_context(); switch (pname) { case GL_VIEWPORT: params[0] = c->viewport.xmin; params[1] = c->viewport.ymin; params[2] = c->viewport.xsize; params[3] = c->viewport.ysize; break; case GL_MAX_MODELVIEW_STACK_DEPTH: *params = MAX_MODELVIEW_STACK_DEPTH; break; case GL_MAX_PROJECTION_STACK_DEPTH: *params = MAX_PROJECTION_STACK_DEPTH; break; case GL_MAX_LIGHTS: *params = MAX_LIGHTS; break; case GL_MAX_TEXTURE_SIZE: *params = 256; /* not completely true, but... */ break; case GL_MAX_TEXTURE_STACK_DEPTH: *params = MAX_TEXTURE_STACK_DEPTH; break; default: gl_fatal_error("glGet: option not implemented"); break; } } void glGetFloatv(GLint pname, GLfloat* v) { GLint i; GLint mnr = 0; /* just a trick to return the correct matrix */ GLContext* c = gl_get_context(); switch (pname) { case GL_TEXTURE_MATRIX: mnr++; case GL_PROJECTION_MATRIX: mnr++; case GL_MODELVIEW_MATRIX: { GLfloat* p = &c->matrix_stack_ptr[mnr]->m[0][0]; ; for (i = 0; i < 4; i++) { *v++ = p[0]; *v++ = p[4]; *v++ = p[8]; *v++ = p[12]; p++; } } break; case GL_LINE_WIDTH: *v = 1.0f; break; case GL_LINE_WIDTH_RANGE: v[0] = v[1] = 1.0f; break; case GL_POINT_SIZE: *v = 1.0f; break; case GL_POINT_SIZE_RANGE: v[0] = v[1] = 1.0f; default: tgl_warning("warning: unknown pname in glGetFloatv()\n"); break; } }