void rglBindFramebuffer(GLenum target, GLuint framebuffer) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); if (!glsm_ctl(GLSM_CTL_IS_FRAMEBUFFER_LOCKED, NULL)) { glBindFramebuffer(target, framebuffer); gl_state.framebuf = framebuffer; } }
void rglCullFace(GLenum mode) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glCullFace(mode); gl_state.cullface.used = true; gl_state.cullface.mode = mode; }
void rglDepthFunc(GLenum func) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); gl_state.depthfunc.used = true; gl_state.depthfunc.func = func; glDepthFunc(func); }
void rglFrontFace(GLenum mode) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glFrontFace(mode); gl_state.frontface.used = true; gl_state.frontface.mode = mode; }
void rglDepthMask(GLboolean flag) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glDepthMask(flag); gl_state.depthmask.used = true; gl_state.depthmask.mask = flag; }
void rglPolygonOffset(GLfloat factor, GLfloat units) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glPolygonOffset(factor, units); gl_state.polygonoffset.used = true; gl_state.polygonoffset.factor = factor; gl_state.polygonoffset.units = units; }
void rglBlendFunc(GLenum sfactor, GLenum dfactor) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); gl_state.blendfunc.used = true; gl_state.blendfunc.sfactor = sfactor; gl_state.blendfunc.dfactor = dfactor; glBlendFunc(sfactor, dfactor); }
void rglViewport(GLint x, GLint y, GLsizei width, GLsizei height) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glViewport(x, y, width, height); gl_state.viewport.x = x; gl_state.viewport.y = y; gl_state.viewport.w = width; gl_state.viewport.h = height; }
void rglScissor(GLint x, GLint y, GLsizei width, GLsizei height) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glScissor(x, y, width, height); gl_state.scissor.used = true; gl_state.scissor.x = x; gl_state.scissor.y = y; gl_state.scissor.w = width; gl_state.scissor.h = height; }
void rglClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glClearColor(red, green, blue, alpha); gl_state.clear_color.r = red; gl_state.clear_color.g = green; gl_state.clear_color.b = blue; gl_state.clear_color.a = alpha; }
void rglBlendFuncSeparate(GLenum sfactor, GLenum dfactor) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); gl_state.blendfunc_separate.used = true; gl_state.blendfunc_separate.srcRGB = sfactor; gl_state.blendfunc_separate.dstRGB = dfactor; gl_state.blendfunc_separate.srcAlpha = sfactor; gl_state.blendfunc_separate.dstAlpha = dfactor; glBlendFunc(sfactor, dfactor); }
void rglClearDepth(GLdouble depth) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); #ifdef HAVE_OPENGLES glClearDepthf(depth); #else glClearDepth(depth); #endif gl_state.cleardepth.used = true; gl_state.cleardepth.depth = depth; }
void rglColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glColorMask(red, green, blue, alpha); gl_state.colormask.red = red; gl_state.colormask.green = green; gl_state.colormask.blue = blue; gl_state.colormask.alpha = alpha; gl_state.colormask.used = true; }
static bool glsm_state_ctx_init(void *data) { glsm_ctx_params_t *params = (glsm_ctx_params_t*)data; if (!params || !params->environ_cb) return false; #ifdef HAVE_OPENGLES #if defined(HAVE_OPENGLES31) hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES_VERSION; hw_render.version_major = 3; hw_render.version_minor = 1; #elif defined(HAVE_OPENGLES3) hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES3; #else hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES2; #endif #else #ifdef CORE hw_render.context_type = RETRO_HW_CONTEXT_OPENGL_CORE; hw_render.version_major = 3; hw_render.version_minor = 1; #else hw_render.context_type = RETRO_HW_CONTEXT_OPENGL; #endif #endif hw_render.context_reset = params->context_reset; hw_render.context_destroy = params->context_destroy; hw_render.stencil = params->stencil; hw_render.depth = true; hw_render.bottom_left_origin = true; hw_render.cache_context = true; imm_vbo_draw = NULL; imm_vbo_disable = NULL; if (params->imm_vbo_draw != NULL) imm_vbo_draw = params->imm_vbo_draw; if (params->imm_vbo_disable != NULL) imm_vbo_disable = params->imm_vbo_disable; glsm_fb_lock = dummy_framebuffer_lock; if (params->framebuffer_lock != NULL) glsm_fb_lock = params->framebuffer_lock; if (imm_vbo_draw != NULL && imm_vbo_disable != NULL) glsm_ctl(GLSM_CTL_SET_IMM_VBO, NULL); if (!params->environ_cb(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render)) return false; return true; }
EXPORT void * CALL VidExt_GL_GetProcAddress(const char* Proc) { #if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) glsm_ctx_proc_address_t proc_info; proc_info.addr = NULL; if (!glsm_ctl(GLSM_CTL_PROC_ADDRESS_GET, NULL)) return NULL; return proc_info.addr(Proc); #else return NULL; #endif }
void rglActiveTexture(GLenum texture) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glActiveTexture(texture); gl_state.active_texture = texture - GL_TEXTURE0; }
void rglEnableVertexAttribArray(GLuint index) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); gl_state.vertex_attrib_pointer.enabled[index] = 1; glEnableVertexAttribArray(index); }
void rglBindTexture(GLenum target, GLuint texture) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glBindTexture(target, texture); gl_state.bind_textures.ids[gl_state.active_texture] = texture; }
void rglBindBuffer(GLenum target, GLuint buffer) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glBindBuffer(target, buffer); }
void rglEnable(GLenum cap) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); glEnable(gl_state.cap_translate[cap]); gl_state.cap_state[cap] = 1; }
void rglUseProgram(GLuint program) { glsm_ctl(GLSM_CTL_IMM_VBO_DRAW, NULL); gl_state.program = program; glUseProgram(program); }