void CSceneNodeAABB::Render() const{ if(!GetSingleton<CProgram>()->IsInWireFrameMode()) { //glPushAttrib(GL_ALL_ATTRIB_BITS); ////glBegin(); //glEnable(GL_MAP2_VERTEX_3); //vector3 r[4] = { // m_aabb.first , // vector3(m_aabb.first.x,m_aabb.second.y,m_aabb.first.z) , // vector3(m_aabb.second.x,m_aabb.first.y,m_aabb.first.z) , // vector3(m_aabb.second.x,m_aabb.second.y,m_aabb.first.z) //}; //glMap2f( GL_MAP2_VERTEX_3,0.0f,1.0f,6,2,0.0f,1.0f,3,2,(GLfloat*)r); //glMapGrid2f(10,0,1,20,0,1); //glEvalMesh2(GL_FILL,0,10,0,20); ////glEnd(); //glPopAttrib(); vector3 dim(GetDim(m_aabb)); vector3 dx(dim.x,0,0); vector3 dy(0,dim.y,0); vector3 dz(0,0,dim.z); unsigned int nx(dim.x*0.02+1); unsigned int ny(dim.y*0.02+1); unsigned int nz(dim.z*0.02+1); DrawFace(m_aabb.first,dy,dx,ny,nx); DrawFace(m_aabb.first,dx,dz,nx,nz); DrawFace(m_aabb.first,dz,dy,nz,ny); DrawFace(m_aabb.second,-dx,-dy,nx,ny); DrawFace(m_aabb.second,-dy,-dz,ny,nz); DrawFace(m_aabb.second,-dz,-dx,nz,nx); return; } glPushAttrib(GL_TEXTURE_BIT); glPushMatrix(); vector3 center(GetCenter(m_aabb)),dim(GetDim(m_aabb)); glTranslatef(center.x,center.y,center.z); { GLenum coord[2]={GL_S,GL_T}; for(int iCoord(0); iCoord<2; ++iCoord) { float f[4]; glGetTexGenfv(coord[iCoord],GL_OBJECT_PLANE,f); f[0]*=dim.x*0.001f; f[1]*=dim.y*0.001f; f[2]*=dim.z*0.001f; //f[2]*=1000; glTexGenfv(coord[iCoord],GL_OBJECT_PLANE,f); } } glScalef(dim.x,dim.y,dim.z); glutSolidCube(1.0); glPopMatrix(); glPopAttrib(); }
int __glXDisp_GetTexGenfv(__GLXclientState *cl, GLbyte *pc) { GLenum pname; GLint compsize; __GLXcontext *cx; ClientPtr client = cl->client; int error; GLfloat 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 = __glGetTexGenfv_size(pname); if (compsize < 0) compsize = 0; __GLX_GET_ANSWER_BUFFER(answer,cl,compsize*4,4); __glXClearErrorOccured(); glGetTexGenfv( *(GLenum *)(pc + 0), *(GLenum *)(pc + 4), (GLfloat *) 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_FLOAT(); __GLX_SEND_HEADER(); } else { __GLX_BEGIN_REPLY(compsize*4); __GLX_PUT_SIZE(compsize); __GLX_SEND_HEADER(); __GLX_SEND_FLOAT_ARRAY(compsize); } return Success; }
M(void, glGetTexGenfv, jint coord, jint pname, jobject params) { glGetTexGenfv(coord, pname, BUFF(GLfloat, params)); }
void gl4es_glGetMultiTexGenfv(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params) { text(glGetTexGenfv(coord, pname, params)); }