1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 05:37:44 +00:00

LibGL: Implement texture unit texturing states

This commit is contained in:
Jelle Raaijmakers 2021-11-29 20:57:27 +01:00 committed by Andreas Kling
parent c7b90fa7d3
commit 5788a139d8
5 changed files with 67 additions and 4 deletions

View file

@ -14,8 +14,8 @@ void TextureUnit::bind_texture_to_target(GLenum texture_target, const RefPtr<Tex
switch (texture_target) {
case GL_TEXTURE_2D:
m_texture_target_2d = static_ptr_cast<Texture2D>(texture);
m_currently_bound_texture = texture;
m_currently_bound_target = GL_TEXTURE_2D;
m_currently_bound_texture = texture;
break;
default:
VERIFY_NOT_REACHED();
@ -27,7 +27,7 @@ void TextureUnit::unbind_texture(GLenum texture_target)
switch (texture_target) {
case GL_TEXTURE_2D:
m_texture_target_2d = nullptr;
m_currently_bound_target = 0;
m_currently_bound_target = GL_NONE;
break;
default:
VERIFY_NOT_REACHED();

View file

@ -27,11 +27,26 @@ public:
void set_env_mode(GLenum mode) { m_env_mode = mode; }
GLenum env_mode() const { return m_env_mode; }
bool texture_1d_enabled() const { return m_texture_1d_enabled; };
void set_texture_1d_enabled(bool texture_1d_enabled) { m_texture_1d_enabled = texture_1d_enabled; }
bool texture_2d_enabled() const { return m_texture_2d_enabled; };
void set_texture_2d_enabled(bool texture_2d_enabled) { m_texture_2d_enabled = texture_2d_enabled; }
bool texture_3d_enabled() const { return m_texture_3d_enabled; };
void set_texture_3d_enabled(bool texture_3d_enabled) { m_texture_3d_enabled = texture_3d_enabled; }
bool texture_cube_map_enabled() const { return m_texture_cube_map_enabled; };
void set_texture_cube_map_enabled(bool texture_cube_map_enabled) { m_texture_cube_map_enabled = texture_cube_map_enabled; }
private:
mutable RefPtr<Texture2D> m_texture_target_2d { nullptr };
mutable RefPtr<Texture> m_currently_bound_texture { nullptr };
GLenum m_currently_bound_target;
GLenum m_env_mode { GL_MODULATE };
// Texturing state per unit, in increasing priority:
bool m_texture_1d_enabled { false };
bool m_texture_2d_enabled { false };
bool m_texture_3d_enabled { false };
bool m_texture_cube_map_enabled { false };
};
}