int __glXDisp_GetTexGeniv(__GLXclientState *cl, GLbyte *pc) { GLenum pname; GLint compsize; __GLXcontext *cx; ClientPtr client = cl->client; int error; GLint answerBuffer[200]; char *answer; cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); if (!cx) { return error; } pc += __GLX_SINGLE_HDR_SIZE; pname = *(GLenum *)(pc + 4); compsize = __glGetTexGeniv_size(pname); if (compsize < 0) compsize = 0; __GLX_GET_ANSWER_BUFFER(answer,cl,compsize*4,4); __glXClearErrorOccured(); glGetTexGeniv( *(GLenum *)(pc + 0), *(GLenum *)(pc + 4), (GLint *) answer ); if (__glXErrorOccured()) { __GLX_BEGIN_REPLY(0); __GLX_PUT_SIZE(0); __GLX_SEND_HEADER(); } else if (compsize == 1) { __GLX_BEGIN_REPLY(0); __GLX_PUT_SIZE(1); __GLX_PUT_INT(); __GLX_SEND_HEADER(); } else { __GLX_BEGIN_REPLY(compsize*4); __GLX_PUT_SIZE(compsize); __GLX_SEND_HEADER(); __GLX_SEND_INT_ARRAY(compsize); } return Success; }
void GlStateSnapshot::log(std::string id, unsigned key, int type) { GLint ival[4]; GLboolean bval[4]; GLdouble dval[4]; GLfloat fval[16]; ival[0] = ival[1] = ival[2] = ival[3] = 0; fval[0] = fval[1] = fval[2] = fval[3] = 0; dval[0] = dval[1] = dval[2] = dval[3] = 0; bval[0] = bval[1] = bval[2] = bval[3] = false; std::ostringstream os; switch (type) { case INTv: glGetIntegerv(key, ival); os << "GL state: " << id << " " << ival[0]; break; case BOOLv: glGetBooleanv(key, bval); os << "GL state: " << id << " " << (bval[0] ? "yes" : "no"); break; case FLOATv: glGetFloatv(key, fval); os << "GL state: " << id << " " << fval[0]; break; case DOUBLEv: glGetDoublev(key, dval); os << "GL state: " << id << " " << dval[0]; break; case INTv2: glGetIntegerv(key, ival); os << "GL state: " << id << " " << ival[0] << " " << ival[1]; break; case INTv4: glGetIntegerv(key, ival); os << "GL state: " << id << " " << ival[0] << " " << ival[1] << " " << ival[2] << " " << ival[3]; break; case BOOLv4: glGetBooleanv(key, bval); os << "GL state: " << id << " " << (bval[0] ? 'y':'n') << " " << (bval[1] ? 'y':'n') << " " << (bval[2] ? 'y':'n') << " " << (bval[3] ? 'y':'n'); break; case FLOATv4: glGetFloatv(key, fval); os << "GL state: " << id << " " << fval[0] << " " << fval[1] << " " << fval[2] << " " << fval[3]; break; case FLOATv16: glGetFloatv(key, fval); os << "GL state: " << id << "0 " << fval[0] << " " << fval[1] << " " << fval[2] << " " << fval[3] << "\n"; os << "GL state: " << id << "1 " << fval[4] << " " << fval[5] << " " << fval[6] << " " << fval[7] << "\n"; os << "GL state: " << id << "2 " << fval[8] << " " << fval[9] << " " << fval[10] << " " << fval[11] << "\n"; os << "GL state: " << id << "3 " << fval[12] << " " << fval[13] << " " << fval[14] << " " << fval[15]; break; case TEXENViv: glGetTexEnviv(GL_TEXTURE_ENV, key, ival); os << "GL state: " << id << " " << ival[0]; break; case TEXENVfv4: glGetTexEnvfv(GL_TEXTURE_ENV, key, fval); os << "GL state: " << id << " " << fval[0] << " " << fval[1] << " " << fval[2] << " " << fval[3]; break; case TEXGENiv: glGetTexGeniv(GL_Q, key, ival); ival[3] = ival[0]; glGetTexGeniv(GL_R, key, ival); ival[2] = ival[0]; glGetTexGeniv(GL_T, key, ival); ival[1] = ival[0]; glGetTexGeniv(GL_S, key, ival); os << "GL state: " << id << " " << ival[0] << " " << ival[1] << " " << ival[2] << " " << ival[3]; break; } m_StateLog.push_back(os.str()); }
M(void, glGetTexGeniv, jint coord, jint pname, jobject params) { glGetTexGeniv(coord, pname, BUFF(GLint, params)); }
void gl4es_glGetMultiTexGeniv(GLenum texunit, GLenum coord, GLenum pname, GLint *params) { text(glGetTexGeniv(coord, pname, params)); }