gfx: figure out face culling defaults
parent
50cc35db90
commit
2277b42619
|
@ -370140,8 +370140,8 @@ renderstate_t renderstate() {
|
||||||
state.blend_src = GL_ONE;
|
state.blend_src = GL_ONE;
|
||||||
state.blend_dst = GL_ZERO;
|
state.blend_dst = GL_ZERO;
|
||||||
|
|
||||||
// Enable culling by default and cull back faces
|
// Disable culling by default but cull back faces
|
||||||
state.cull_face_enabled = GL_TRUE;
|
state.cull_face_enabled = GL_FALSE;
|
||||||
state.cull_face_mode = GL_BACK;
|
state.cull_face_mode = GL_BACK;
|
||||||
|
|
||||||
// Disable stencil test by default
|
// Disable stencil test by default
|
||||||
|
@ -370175,8 +370175,18 @@ bool renderstate_compare(const renderstate_t *stateA, const renderstate_t *state
|
||||||
return memcmp(stateA, stateB, sizeof(renderstate_t)) == 0;
|
return memcmp(stateA, stateB, sizeof(renderstate_t)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static renderstate_t last_rs;
|
||||||
|
|
||||||
void renderstate_apply(const renderstate_t *state) {
|
void renderstate_apply(const renderstate_t *state) {
|
||||||
if (state != NULL) {
|
if (state != NULL) {
|
||||||
|
// Compare renderstates and bail if they are the same
|
||||||
|
if (renderstate_compare(state, &last_rs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store renderstate
|
||||||
|
last_rs = *state;
|
||||||
|
|
||||||
// Apply clear color
|
// Apply clear color
|
||||||
glClearColor(state->clear_color[0], state->clear_color[1], state->clear_color[2], state->clear_color[3]);
|
glClearColor(state->clear_color[0], state->clear_color[1], state->clear_color[2], state->clear_color[3]);
|
||||||
|
|
||||||
|
@ -370201,12 +370211,12 @@ void renderstate_apply(const renderstate_t *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply culling @fixme
|
// Apply culling @fixme
|
||||||
// if (state->cull_face_enabled) {
|
if (state->cull_face_enabled) {
|
||||||
// glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
// glCullFace(state->cull_face_mode);
|
glCullFace(state->cull_face_mode);
|
||||||
// } else {
|
} else {
|
||||||
// glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// Apply stencil test
|
// Apply stencil test
|
||||||
if (state->stencil_test_enabled) {
|
if (state->stencil_test_enabled) {
|
||||||
|
@ -370217,7 +370227,7 @@ void renderstate_apply(const renderstate_t *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply front face direction @fixme
|
// Apply front face direction @fixme
|
||||||
// glFrontFace(state->front_face);
|
glFrontFace(state->front_face);
|
||||||
|
|
||||||
// Apply line width
|
// Apply line width
|
||||||
glLineWidth(state->line_width);
|
glLineWidth(state->line_width);
|
||||||
|
@ -372060,6 +372070,9 @@ int skybox_push_state(skybox_t *sky, mat44 proj, mat44 view) {
|
||||||
|
|
||||||
do_once {
|
do_once {
|
||||||
skybox_rs = renderstate();
|
skybox_rs = renderstate();
|
||||||
|
skybox_rs.depth_test_enabled = 0;
|
||||||
|
skybox_rs.cull_face_enabled = 0;
|
||||||
|
skybox_rs.front_face = GL_CW;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have to reset clear color here, because of wrong alpha compositing issues on native transparent windows otherwise
|
// we have to reset clear color here, because of wrong alpha compositing issues on native transparent windows otherwise
|
||||||
|
@ -373753,6 +373766,10 @@ model_t model_from_mem(const void *mem, int len, int flags) {
|
||||||
{
|
{
|
||||||
m.rs = renderstate();
|
m.rs = renderstate();
|
||||||
m.rs.blend_enabled = 1;
|
m.rs.blend_enabled = 1;
|
||||||
|
m.rs.blend_src = GL_SRC_ALPHA;
|
||||||
|
m.rs.blend_dst = GL_ONE_MINUS_SRC_ALPHA;
|
||||||
|
m.rs.cull_face_mode = GL_BACK;
|
||||||
|
m.rs.front_face = GL_CW;
|
||||||
}
|
}
|
||||||
|
|
||||||
m.stored_flags = flags;
|
m.stored_flags = flags;
|
||||||
|
|
|
@ -75,8 +75,8 @@ renderstate_t renderstate() {
|
||||||
state.blend_src = GL_ONE;
|
state.blend_src = GL_ONE;
|
||||||
state.blend_dst = GL_ZERO;
|
state.blend_dst = GL_ZERO;
|
||||||
|
|
||||||
// Enable culling by default and cull back faces
|
// Disable culling by default but cull back faces
|
||||||
state.cull_face_enabled = GL_TRUE;
|
state.cull_face_enabled = GL_FALSE;
|
||||||
state.cull_face_mode = GL_BACK;
|
state.cull_face_mode = GL_BACK;
|
||||||
|
|
||||||
// Disable stencil test by default
|
// Disable stencil test by default
|
||||||
|
@ -110,8 +110,18 @@ bool renderstate_compare(const renderstate_t *stateA, const renderstate_t *state
|
||||||
return memcmp(stateA, stateB, sizeof(renderstate_t)) == 0;
|
return memcmp(stateA, stateB, sizeof(renderstate_t)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static renderstate_t last_rs;
|
||||||
|
|
||||||
void renderstate_apply(const renderstate_t *state) {
|
void renderstate_apply(const renderstate_t *state) {
|
||||||
if (state != NULL) {
|
if (state != NULL) {
|
||||||
|
// Compare renderstates and bail if they are the same
|
||||||
|
if (renderstate_compare(state, &last_rs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store renderstate
|
||||||
|
last_rs = *state;
|
||||||
|
|
||||||
// Apply clear color
|
// Apply clear color
|
||||||
glClearColor(state->clear_color[0], state->clear_color[1], state->clear_color[2], state->clear_color[3]);
|
glClearColor(state->clear_color[0], state->clear_color[1], state->clear_color[2], state->clear_color[3]);
|
||||||
|
|
||||||
|
@ -136,12 +146,12 @@ void renderstate_apply(const renderstate_t *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply culling @fixme
|
// Apply culling @fixme
|
||||||
// if (state->cull_face_enabled) {
|
if (state->cull_face_enabled) {
|
||||||
// glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
// glCullFace(state->cull_face_mode);
|
glCullFace(state->cull_face_mode);
|
||||||
// } else {
|
} else {
|
||||||
// glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// Apply stencil test
|
// Apply stencil test
|
||||||
if (state->stencil_test_enabled) {
|
if (state->stencil_test_enabled) {
|
||||||
|
@ -152,7 +162,7 @@ void renderstate_apply(const renderstate_t *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply front face direction @fixme
|
// Apply front face direction @fixme
|
||||||
// glFrontFace(state->front_face);
|
glFrontFace(state->front_face);
|
||||||
|
|
||||||
// Apply line width
|
// Apply line width
|
||||||
glLineWidth(state->line_width);
|
glLineWidth(state->line_width);
|
||||||
|
@ -1995,6 +2005,9 @@ int skybox_push_state(skybox_t *sky, mat44 proj, mat44 view) {
|
||||||
|
|
||||||
do_once {
|
do_once {
|
||||||
skybox_rs = renderstate();
|
skybox_rs = renderstate();
|
||||||
|
skybox_rs.depth_test_enabled = 0;
|
||||||
|
skybox_rs.cull_face_enabled = 0;
|
||||||
|
skybox_rs.front_face = GL_CW;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have to reset clear color here, because of wrong alpha compositing issues on native transparent windows otherwise
|
// we have to reset clear color here, because of wrong alpha compositing issues on native transparent windows otherwise
|
||||||
|
@ -3688,6 +3701,10 @@ model_t model_from_mem(const void *mem, int len, int flags) {
|
||||||
{
|
{
|
||||||
m.rs = renderstate();
|
m.rs = renderstate();
|
||||||
m.rs.blend_enabled = 1;
|
m.rs.blend_enabled = 1;
|
||||||
|
m.rs.blend_src = GL_SRC_ALPHA;
|
||||||
|
m.rs.blend_dst = GL_ONE_MINUS_SRC_ALPHA;
|
||||||
|
m.rs.cull_face_mode = GL_BACK;
|
||||||
|
m.rs.front_face = GL_CW;
|
||||||
}
|
}
|
||||||
|
|
||||||
m.stored_flags = flags;
|
m.stored_flags = flags;
|
||||||
|
|
35
engine/v4k.c
35
engine/v4k.c
|
@ -17239,8 +17239,8 @@ renderstate_t renderstate() {
|
||||||
state.blend_src = GL_ONE;
|
state.blend_src = GL_ONE;
|
||||||
state.blend_dst = GL_ZERO;
|
state.blend_dst = GL_ZERO;
|
||||||
|
|
||||||
// Enable culling by default and cull back faces
|
// Disable culling by default but cull back faces
|
||||||
state.cull_face_enabled = GL_TRUE;
|
state.cull_face_enabled = GL_FALSE;
|
||||||
state.cull_face_mode = GL_BACK;
|
state.cull_face_mode = GL_BACK;
|
||||||
|
|
||||||
// Disable stencil test by default
|
// Disable stencil test by default
|
||||||
|
@ -17274,8 +17274,18 @@ bool renderstate_compare(const renderstate_t *stateA, const renderstate_t *state
|
||||||
return memcmp(stateA, stateB, sizeof(renderstate_t)) == 0;
|
return memcmp(stateA, stateB, sizeof(renderstate_t)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static renderstate_t last_rs;
|
||||||
|
|
||||||
void renderstate_apply(const renderstate_t *state) {
|
void renderstate_apply(const renderstate_t *state) {
|
||||||
if (state != NULL) {
|
if (state != NULL) {
|
||||||
|
// Compare renderstates and bail if they are the same
|
||||||
|
if (renderstate_compare(state, &last_rs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store renderstate
|
||||||
|
last_rs = *state;
|
||||||
|
|
||||||
// Apply clear color
|
// Apply clear color
|
||||||
glClearColor(state->clear_color[0], state->clear_color[1], state->clear_color[2], state->clear_color[3]);
|
glClearColor(state->clear_color[0], state->clear_color[1], state->clear_color[2], state->clear_color[3]);
|
||||||
|
|
||||||
|
@ -17300,12 +17310,12 @@ void renderstate_apply(const renderstate_t *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply culling @fixme
|
// Apply culling @fixme
|
||||||
// if (state->cull_face_enabled) {
|
if (state->cull_face_enabled) {
|
||||||
// glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
// glCullFace(state->cull_face_mode);
|
glCullFace(state->cull_face_mode);
|
||||||
// } else {
|
} else {
|
||||||
// glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// Apply stencil test
|
// Apply stencil test
|
||||||
if (state->stencil_test_enabled) {
|
if (state->stencil_test_enabled) {
|
||||||
|
@ -17316,7 +17326,7 @@ void renderstate_apply(const renderstate_t *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply front face direction @fixme
|
// Apply front face direction @fixme
|
||||||
// glFrontFace(state->front_face);
|
glFrontFace(state->front_face);
|
||||||
|
|
||||||
// Apply line width
|
// Apply line width
|
||||||
glLineWidth(state->line_width);
|
glLineWidth(state->line_width);
|
||||||
|
@ -19159,6 +19169,9 @@ int skybox_push_state(skybox_t *sky, mat44 proj, mat44 view) {
|
||||||
|
|
||||||
do_once {
|
do_once {
|
||||||
skybox_rs = renderstate();
|
skybox_rs = renderstate();
|
||||||
|
skybox_rs.depth_test_enabled = 0;
|
||||||
|
skybox_rs.cull_face_enabled = 0;
|
||||||
|
skybox_rs.front_face = GL_CW;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have to reset clear color here, because of wrong alpha compositing issues on native transparent windows otherwise
|
// we have to reset clear color here, because of wrong alpha compositing issues on native transparent windows otherwise
|
||||||
|
@ -20852,6 +20865,10 @@ model_t model_from_mem(const void *mem, int len, int flags) {
|
||||||
{
|
{
|
||||||
m.rs = renderstate();
|
m.rs = renderstate();
|
||||||
m.rs.blend_enabled = 1;
|
m.rs.blend_enabled = 1;
|
||||||
|
m.rs.blend_src = GL_SRC_ALPHA;
|
||||||
|
m.rs.blend_dst = GL_ONE_MINUS_SRC_ALPHA;
|
||||||
|
m.rs.cull_face_mode = GL_BACK;
|
||||||
|
m.rs.front_face = GL_CW;
|
||||||
}
|
}
|
||||||
|
|
||||||
m.stored_flags = flags;
|
m.stored_flags = flags;
|
||||||
|
|
Loading…
Reference in New Issue