gl_rend_state massive overhaul. Created render_data_context

This commit is contained in:
korenkonder
2025-04-25 20:38:15 +03:00
parent 9cdd9eaf94
commit 452b12e000
71 changed files with 4587 additions and 3541 deletions
+110
View File
@@ -0,0 +1,110 @@
/*
by korenkonder
GitHub/GitLab: korenkonder
*/
#include "gl_state.hpp"
gl_state_struct gl_state;
void gl_state_struct::bind_framebuffer(GLuint framebuffer, bool force) {
if (force || read_framebuffer_binding != framebuffer
|| draw_framebuffer_binding != framebuffer) {
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
read_framebuffer_binding = framebuffer;
draw_framebuffer_binding = framebuffer;
}
}
void gl_state_struct::bind_read_framebuffer(GLuint framebuffer, bool force) {
if (force || read_framebuffer_binding != framebuffer) {
glBindFramebuffer(GL_READ_FRAMEBUFFER, framebuffer);
read_framebuffer_binding = framebuffer;
}
}
void gl_state_struct::bind_draw_framebuffer(GLuint framebuffer, bool force) {
if (force || draw_framebuffer_binding != framebuffer) {
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
draw_framebuffer_binding = framebuffer;
}
}
void gl_state_struct::bind_vertex_array(GLuint array, bool force) {
if (force || vertex_array_binding != array) {
glBindVertexArray(array);
vertex_array_binding = array;
}
}
void gl_state_struct::bind_array_buffer(GLuint buffer, bool force) {
if (force || array_buffer_binding != buffer) {
glBindBuffer(GL_ARRAY_BUFFER, buffer);
array_buffer_binding = buffer;
}
}
void gl_state_struct::bind_element_array_buffer(GLuint buffer, bool force) {
if (force || element_array_buffer_binding != buffer) {
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer);
element_array_buffer_binding = buffer;
}
}
void gl_state_struct::bind_uniform_buffer(GLuint buffer, bool force) {
if (force || uniform_buffer_binding != buffer) {
glBindBuffer(GL_UNIFORM_BUFFER, buffer);
uniform_buffer_binding = buffer;
}
}
void gl_state_struct::bind_shader_storage_buffer(GLuint buffer, bool force) {
if (force || shader_storage_buffer_binding != buffer) {
glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer);
shader_storage_buffer_binding = buffer;
}
}
void gl_state_struct::bind_texture_2d(GLuint texture, bool force) {
if (texture_binding_2d != texture) {
glBindTexture(GL_TEXTURE_2D, texture);
texture_binding_2d = texture;
}
}
void gl_state_struct::bind_texture_cube_map(GLuint texture, bool force) {
if (force || texture_binding_cube_map != texture) {
glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
texture_binding_cube_map = texture;
}
}
bool gl_state_struct::check_uniform_buffer_binding() {
return uniform_buffer_binding != 0;
}
bool gl_state_struct::check_shader_storage_buffer_binding() {
return shader_storage_buffer_binding != 0;
}
bool gl_state_struct::check_texture_binding_2d() {
return texture_binding_2d != 0;
}
bool gl_state_struct::check_texture_binding_cube_map() {
return texture_binding_cube_map != 0;
}
void gl_state_struct::get() {
glGetIntegerv(GL_TEXTURE_BINDING_2D, (GLint*)&texture_binding_2d);
glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP, (GLint*)&texture_binding_cube_map);
glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, (GLint*)&read_framebuffer_binding);
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, (GLint*)&draw_framebuffer_binding);
glGetIntegerv(GL_VERTEX_ARRAY_BINDING, (GLint*)&vertex_array_binding);
glGetIntegerv(GL_ARRAY_BUFFER_BINDING, (GLint*)&array_buffer_binding);
glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint*)&element_array_buffer_binding);
glGetIntegerv(GL_UNIFORM_BUFFER_BINDING, (GLint*)&uniform_buffer_binding);
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
}