GLint gl4es_glRenderMode(GLenum mode) { if(glstate->list.compiling) {errorShim(GL_INVALID_OPERATION); return 0;} if(glstate->list.active) flush(); int ret = 0; if ((mode==GL_SELECT) || (mode==GL_RENDER)) { // missing GL_FEEDBACK noerrorShim(); } else { errorShim(GL_INVALID_ENUM); return 0; } if (glstate->render_mode == GL_SELECT) { push_hit(); ret = glstate->selectbuf.count; } if (mode == GL_SELECT) { if (glstate->selectbuf.buffer == NULL) {// error, cannot use Select Mode without select buffer errorShim(GL_INVALID_OPERATION); return 0; } glstate->selectbuf.count = 0; glstate->selectbuf.pos = 0; glstate->selectbuf.overflow = 0; glstate->selectbuf.zmin = 1e10f; glstate->selectbuf.zmax = -1e10f; glstate->selectbuf.zminoverall = 1e10f; glstate->selectbuf.zmaxoverall = -1e10f; glstate->selectbuf.hit = 0; } glstate->render_mode = mode; return ret; }
void glPopName() { noerrorShim(); if (state.render_mode != GL_SELECT) return; push_hit(); if (state.namestack.top>0) state.namestack.top--; else errorShim(GL_STACK_UNDERFLOW); }
void glPushName(GLuint name) { noerrorShim(); if (state.render_mode != GL_SELECT) return; if (state.namestack.names==0) return; push_hit(); if (state.namestack.top < 1024) { state.namestack.names[state.namestack.top++] = name; } }
void glLoadName(GLuint name) { noerrorShim(); if (state.render_mode != GL_SELECT) return; if (state.namestack.names == 0) return; push_hit(); if (state.namestack.top == 0) return; state.namestack.names[state.namestack.top-1] = name; }
void gl4es_glPushName(GLuint name) { noerrorShim(); if (glstate->render_mode != GL_SELECT) return; if (glstate->namestack.names==0) return; push_hit(); if (glstate->namestack.top < 1024) { glstate->namestack.names[glstate->namestack.top++] = name; } }
void gl4es_glLoadName(GLuint name) { noerrorShim(); if (glstate->render_mode != GL_SELECT) return; if (glstate->namestack.names == 0) return; push_hit(); if (glstate->namestack.top == 0) return; glstate->namestack.names[glstate->namestack.top-1] = name; }
void gl4es_glPopName() { if(glstate->list.pending) flush(); if(glstate->list.active) { NewStage(glstate->list.active, STAGE_RENDER); glstate->list.active->render_op = 2; return; } noerrorShim(); if (glstate->render_mode != GL_SELECT) return; push_hit(); if (glstate->namestack.top>0) glstate->namestack.top--; else errorShim(GL_STACK_UNDERFLOW); }
void gl4es_glLoadName(GLuint name) { if(glstate->list.pending) flush(); if(glstate->list.active) { NewStage(glstate->list.active, STAGE_RENDER); glstate->list.active->render_op = 4; glstate->list.active->render_arg = name; return; } noerrorShim(); if (glstate->render_mode != GL_SELECT) return; if (glstate->namestack.names == 0) return; push_hit(); if (glstate->namestack.top == 0) return; glstate->namestack.names[glstate->namestack.top-1] = name; }
GLint glRenderMode(GLenum mode) { int ret = 0; if ((mode==GL_SELECT) || (mode==GL_RENDER)) { // missing GL_FEEDBACK noerrorShim(); } else { errorShim(GL_INVALID_ENUM); return 0; } if (state.render_mode == GL_SELECT) { push_hit(); ret = state.selectbuf.count; } if (mode == GL_SELECT) { if (state.selectbuf.buffer == NULL) {// error, cannot use Select Mode without select buffer errorShim(GL_INVALID_OPERATION); return 0; } state.selectbuf.count = 0; state.selectbuf.pos = 0; state.selectbuf.overflow = 0; state.selectbuf.zmin = 1.0f; state.selectbuf.zmax = 0.0f; state.selectbuf.hit = 0; } if((mode==GL_SELECT) && (state.gl_batch)) { state.gl_batch = 0; flush(); } if((mode==GL_RENDER) && (state.gl_batch==0) && (gl_batch==1)) { state.gl_batch = 1; flush(); } state.render_mode = mode; return ret; }