Example #1
0
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;
}
Example #2
0
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);
}
Example #3
0
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;
	}
}
Example #4
0
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;
}
Example #5
0
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;
	}
}
Example #6
0
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;
}
Example #7
0
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);
}
Example #8
0
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;
}
Example #9
0
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;
}