Prechádzať zdrojové kódy

LibGL: Add stub for `glCopyTexImage2D`

Jelle Raaijmakers 3 rokov pred
rodič
commit
6643775999

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

@@ -489,6 +489,7 @@ GLAPI void glLineWidth(GLfloat width);
 GLAPI void glPushAttrib(GLbitfield mask);
 GLAPI void glPopAttrib();
 GLAPI void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, GLubyte const* bitmap);
+GLAPI void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
 
 #ifdef __cplusplus
 }

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

@@ -104,6 +104,7 @@ public:
     virtual void gl_pop_attrib() = 0;
     virtual void gl_light_model(GLenum pname, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;
     virtual void gl_bitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, GLubyte const* bitmap) = 0;
+    virtual void gl_copy_tex_image_2d(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) = 0;
 
     virtual void present() = 0;
 };

+ 5 - 0
Userland/Libraries/LibGL/GLTexture.cpp

@@ -56,3 +56,8 @@ void glTexEnvf(GLenum target, GLenum pname, GLfloat param)
 {
     g_gl_context->gl_tex_env(target, pname, param);
 }
+
+void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+    g_gl_context->gl_copy_tex_image_2d(target, level, internalformat, x, y, width, height, border);
+}

+ 10 - 0
Userland/Libraries/LibGL/SoftwareGLContext.cpp

@@ -2475,6 +2475,16 @@ void SoftwareGLContext::gl_bitmap(GLsizei width, GLsizei height, GLfloat xorig,
     dbgln_if(GL_DEBUG, "SoftwareGLContext FIXME: implement gl_bitmap({}, {}, {}, {}, {}, {}, {})", width, height, xorig, yorig, xmove, ymove, bitmap);
 }
 
+void SoftwareGLContext::gl_copy_tex_image_2d(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+    APPEND_TO_CALL_LIST_AND_RETURN_IF_NEEDED(gl_copy_tex_image_2d, target, level, internalformat, x, y, width, height, border);
+    RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
+
+    // FIXME: implement
+    dbgln_if(GL_DEBUG, "SoftwareGLContext FIXME: implement gl_copy_tex_image_2d({:#x}, {}, {:#x}, {}, {}, {}, {}, {})",
+        target, level, internalformat, x, y, width, height, border);
+}
+
 void SoftwareGLContext::present()
 {
     m_rasterizer.blit_to(*m_frontbuffer);

+ 3 - 1
Userland/Libraries/LibGL/SoftwareGLContext.h

@@ -115,6 +115,7 @@ public:
     virtual void gl_pop_attrib() override;
     virtual void gl_light_model(GLenum pname, GLfloat x, GLfloat y, GLfloat z, GLfloat w) override;
     virtual void gl_bitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, GLubyte const* bitmap) override;
+    virtual void gl_copy_tex_image_2d(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) override;
     virtual void present() override;
 
 private:
@@ -290,7 +291,8 @@ private:
             decltype(&SoftwareGLContext::gl_push_attrib),
             decltype(&SoftwareGLContext::gl_pop_attrib),
             decltype(&SoftwareGLContext::gl_light_model),
-            decltype(&SoftwareGLContext::gl_bitmap)>;
+            decltype(&SoftwareGLContext::gl_bitmap),
+            decltype(&SoftwareGLContext::gl_copy_tex_image_2d)>;
 
         using ExtraSavedArguments = Variant<
             FloatMatrix4x4>;