Jelajahi Sumber

LibGL: Implement `GL_(CLIENT_)?ACTIVE_TEXTURE` context parameters

Jelle Raaijmakers 2 tahun lalu
induk
melakukan
af217b0c3a

+ 4 - 0
Userland/Libraries/LibGL/ContextParameter.cpp

@@ -14,6 +14,8 @@ namespace GL {
 Optional<ContextParameter> GLContext::get_context_parameter(GLenum name)
 {
     switch (name) {
+    case GL_ACTIVE_TEXTURE:
+        return ContextParameter { .type = GL_INT, .value = { .integer_value = static_cast<GLint>(GL_TEXTURE0 + m_active_texture_unit_index) } };
     case GL_ALPHA_BITS:
         return ContextParameter { .type = GL_INT, .value = { .integer_value = sizeof(u8) * 8 } };
     case GL_ALPHA_TEST:
@@ -26,6 +28,8 @@ Optional<ContextParameter> GLContext::get_context_parameter(GLenum name)
         return ContextParameter { .type = GL_INT, .value = { .integer_value = static_cast<GLint>(m_blend_source_factor) } };
     case GL_BLUE_BITS:
         return ContextParameter { .type = GL_INT, .value = { .integer_value = sizeof(u8) * 8 } };
+    case GL_CLIENT_ACTIVE_TEXTURE:
+        return ContextParameter { .type = GL_INT, .value = { .integer_value = static_cast<GLint>(GL_TEXTURE0 + m_client_active_texture) } };
     case GL_COLOR_MATERIAL:
         return ContextParameter { .type = GL_BOOL, .is_capability = true, .value = { .boolean_value = m_color_material_enabled } };
     case GL_COLOR_MATERIAL_FACE:

+ 2 - 0
Userland/Libraries/LibGL/GL/gl.h

@@ -121,6 +121,8 @@ extern "C" {
 #define GL_ALPHA_BITS 0x0D55
 #define GL_DEPTH_BITS 0x0D56
 #define GL_STENCIL_BITS 0x0D57
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
 #define GL_MAX_TEXTURE_UNITS 0x84E2
 #define GL_MAX_LIGHTS 0x0D31
 #define GL_AUTO_NORMAL 0x0D80

+ 1 - 1
Userland/Libraries/LibGL/GLContext.h

@@ -339,7 +339,7 @@ private:
     bool m_client_side_vertex_array_enabled { false };
     bool m_client_side_color_array_enabled { false };
     Vector<bool> m_client_side_texture_coord_array_enabled;
-    size_t m_client_active_texture = 0;
+    size_t m_client_active_texture { 0 };
     bool m_client_side_normal_array_enabled { false };
 
     NonnullRefPtr<Gfx::Bitmap> m_frontbuffer;