Skip to content

Commit f4e5458

Browse files
committed
Fix models rendering incorrectly when using rtt
1 parent 8fb7a05 commit f4e5458

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

code/graphics/opengl/gropengltexture.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1866,10 +1866,10 @@ int opengl_make_render_target( int handle, int *w, int *h, int *bpp, int *mm_lvl
18661866

18671867
GL_state.Texture.Enable(0);
18681868

1869-
// render buffer
1870-
// glGenRenderbuffers(1, &new_fbo.renderbuffer_id);
1871-
// glBindRenderbuffer(GL_RENDERBUFFER, new_fbo.renderbuffer_id);
1872-
// glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, *w, *h);
1869+
// render buffer (depth)
1870+
glGenRenderbuffers(1, &new_fbo->renderbuffer_id);
1871+
glBindRenderbuffer(GL_RENDERBUFFER, new_fbo->renderbuffer_id);
1872+
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, *w, *h);
18731873
glBindRenderbuffer(GL_RENDERBUFFER, 0);
18741874

18751875
// frame buffer
@@ -1883,7 +1883,7 @@ int opengl_make_render_target( int handle, int *w, int *h, int *bpp, int *mm_lvl
18831883
glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, ts->texture_id, 0, 0);
18841884
}
18851885

1886-
// glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, new_fbo.renderbuffer_id);
1886+
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, new_fbo->renderbuffer_id);
18871887

18881888
if ( opengl_check_framebuffer() ) {
18891889
// Oops!! reset everything and then bail
@@ -1898,7 +1898,10 @@ int opengl_make_render_target( int handle, int *w, int *h, int *bpp, int *mm_lvl
18981898

18991899
glDeleteFramebuffers(1, &new_fbo->framebuffer_id);
19001900

1901-
// glDeleteRenderbuffersEXT(1, &new_fbo.renderbuffer_id);
1901+
if (new_fbo->renderbuffer_id) {
1902+
glDeleteRenderbuffers(1, &new_fbo->renderbuffer_id);
1903+
new_fbo->renderbuffer_id = 0;
1904+
}
19021905

19031906
opengl_set_texture_target();
19041907
opengl_free_fbo_slot(fbo_id);

code/graphics/opengl/gropengltnl.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,10 @@ void opengl_tnl_set_model_material(model_material *material_info)
822822
opengl_tnl_set_material(material_info, false, false);
823823

824824
if ( GL_state.CullFace() ) {
825-
GL_state.FrontFaceValue(GL_CW);
825+
// Model rendering uses CW front faces in the default backbuffer path.
826+
// Render-to-texture flips the projection vertically, which flips winding,
827+
// so we must invert the front-face definition there.
828+
GL_state.FrontFaceValue(gr_screen.rendering_to_texture != -1 ? GL_CCW : GL_CW);
826829
}
827830

828831
gr_set_center_alpha(material_info->get_center_alpha());

0 commit comments

Comments
 (0)