forked from suyu/suyu
Implemented glColorMask
This commit is contained in:
parent
b1cb0a3f2c
commit
d42275f11c
3 changed files with 24 additions and 0 deletions
|
@ -652,6 +652,10 @@ void RasterizerOpenGL::SyncDepthTest() {
|
|||
const auto& regs = Pica::g_state.regs;
|
||||
state.depth.test_enabled = (regs.output_merger.depth_test_enable == 1);
|
||||
state.depth.test_func = PicaToGL::CompareFunc(regs.output_merger.depth_test_func);
|
||||
state.color_mask.red_enabled = regs.output_merger.red_enable;
|
||||
state.color_mask.green_enabled = regs.output_merger.green_enable;
|
||||
state.color_mask.blue_enabled = regs.output_merger.blue_enable;
|
||||
state.color_mask.alpha_enabled = regs.output_merger.alpha_enable;
|
||||
state.depth.write_mask = regs.output_merger.depth_write_enable ? GL_TRUE : GL_FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,11 @@ OpenGLState::OpenGLState() {
|
|||
depth.test_func = GL_LESS;
|
||||
depth.write_mask = GL_TRUE;
|
||||
|
||||
color_mask.red_enabled = GL_TRUE;
|
||||
color_mask.green_enabled = GL_TRUE;
|
||||
color_mask.blue_enabled = GL_TRUE;
|
||||
color_mask.alpha_enabled = GL_TRUE;
|
||||
|
||||
stencil.test_enabled = false;
|
||||
stencil.test_func = GL_ALWAYS;
|
||||
stencil.test_ref = 0;
|
||||
|
@ -77,6 +82,14 @@ void OpenGLState::Apply() {
|
|||
glDepthMask(depth.write_mask);
|
||||
}
|
||||
|
||||
// Color mask
|
||||
if (color_mask.red_enabled != cur_state.color_mask.red_enabled ||
|
||||
color_mask.green_enabled != cur_state.color_mask.green_enabled ||
|
||||
color_mask.blue_enabled != cur_state.color_mask.blue_enabled ||
|
||||
color_mask.alpha_enabled != cur_state.color_mask.alpha_enabled) {
|
||||
glColorMask(color_mask.red_enabled, color_mask.green_enabled, color_mask.blue_enabled, color_mask.alpha_enabled);
|
||||
}
|
||||
|
||||
// Stencil test
|
||||
if (stencil.test_enabled != cur_state.stencil.test_enabled) {
|
||||
if (stencil.test_enabled) {
|
||||
|
|
|
@ -19,6 +19,13 @@ public:
|
|||
GLboolean write_mask; // GL_DEPTH_WRITEMASK
|
||||
} depth;
|
||||
|
||||
struct {
|
||||
GLboolean red_enabled;
|
||||
GLboolean green_enabled;
|
||||
GLboolean blue_enabled;
|
||||
GLboolean alpha_enabled;
|
||||
} color_mask; // GL_COLOR_WRITEMASK
|
||||
|
||||
struct {
|
||||
bool test_enabled; // GL_STENCIL_TEST
|
||||
GLenum test_func; // GL_STENCIL_FUNC
|
||||
|
|
Loading…
Reference in a new issue