glTextureSubImage2D should be called via gl_rend_state

This commit is contained in:
korenkonder
2026-05-26 10:29:34 +03:00
parent aedc137865
commit 1a8f2df085
3 changed files with 19 additions and 4 deletions
+15 -2
View File
@@ -270,6 +270,8 @@ struct gl_rend_state {
void set_viewport(GLint x, GLint y, GLsizei width, GLsizei height);
void tex_sub_image_2d(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
void texture_sub_image_2d(GLuint texture, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
void unmap_array_buffer(GLuint buffer);
void unmap_element_array_buffer(GLuint buffer);
void unmap_uniform_buffer(GLuint buffer);
@@ -657,13 +659,18 @@ void p_gl_rend_state::set_viewport(const gl_rend_state_rect& rect) {
ptr.set_viewport(rect);
}
void p_gl_rend_state::set_viewport(GLint x, GLint y, GLsizei width, GLsizei height) {
ptr.set_viewport(x, y, width, height);
}
void p_gl_rend_state::tex_sub_image_2d(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels) {
ptr.tex_sub_image_2d(target, level, xoffset, yoffset, width, height, format, type, pixels);
}
void p_gl_rend_state::set_viewport(GLint x, GLint y, GLsizei width, GLsizei height) {
ptr.set_viewport(x, y, width, height);
void p_gl_rend_state::texture_sub_image_2d(GLuint texture, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels) {
ptr.texture_sub_image_2d(texture, level, xoffset, yoffset, width, height, format, type, pixels);
}
void p_gl_rend_state::use_program(GLuint program) {
@@ -1632,6 +1639,12 @@ inline void gl_rend_state::tex_sub_image_2d(GLenum target, GLint level, GLint xo
enum_or(flags, GL_REND_STATE_EXECUTE);
}
inline void gl_rend_state::texture_sub_image_2d(GLuint texture, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels) {
glTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, type, pixels);
enum_or(flags, GL_REND_STATE_EXECUTE);
}
void gl_rend_state::update() {
if (!update_flags)
return;
+3 -1
View File
@@ -118,9 +118,11 @@ struct p_gl_rend_state {
void set_stencil_mask(GLuint mask);
void set_stencil_op(GLenum sfail, GLenum dpfail, GLenum dppass);
void set_viewport(const gl_rend_state_rect& rect);
void set_viewport(GLint x, GLint y, GLsizei width, GLsizei height);
void tex_sub_image_2d(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
void set_viewport(GLint x, GLint y, GLsizei width, GLsizei height);
void texture_sub_image_2d(GLuint texture, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
void unmap_array_buffer(GLuint buffer);
void unmap_element_array_buffer(GLuint buffer);
void unmap_uniform_buffer(GLuint buffer);
+1 -1
View File
@@ -2327,7 +2327,7 @@ namespace rndr {
}
if (GLAD_GL_VERSION_4_5)
glTextureSubImage2D(tonemap_lut_texture, 0, 0, 0,
p_gl_rend_st.texture_sub_image_2d(tonemap_lut_texture, 0, 0, 0,
16 * TONE_MAP_SAT_GAMMA_SAMPLES, 1, GL_RG, GL_FLOAT, tex_data);
else {
p_gl_rend_st.bind_texture_2d(tonemap_lut_texture);