1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:28:12 +00:00

LibGL: Implement glColorPointer

This commit is contained in:
Stephan Unverwerth 2021-08-13 13:16:00 +02:00 committed by Andreas Kling
parent 07b9cba6e6
commit f52f40925c
5 changed files with 33 additions and 0 deletions

View file

@ -358,6 +358,7 @@ GLAPI void glDepthMask(GLboolean flag);
GLAPI void glEnableClientState(GLenum cap);
GLAPI void glDisableClientState(GLenum cap);
GLAPI void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void* pointer);
GLAPI void glColorPointer(GLint size, GLenum type, GLsizei stride, const void* pointer);
#ifdef __cplusplus
}

View file

@ -67,6 +67,7 @@ public:
virtual void gl_enable_client_state(GLenum cap) = 0;
virtual void gl_disable_client_state(GLenum cap) = 0;
virtual void gl_vertex_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) = 0;
virtual void gl_color_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) = 0;
virtual void present() = 0;
};

View file

@ -13,3 +13,8 @@ void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void* pointe
{
g_gl_context->gl_vertex_pointer(size, type, stride, pointer);
}
void glColorPointer(GLint size, GLenum type, GLsizei stride, const void* pointer)
{
g_gl_context->gl_color_pointer(size, type, stride, pointer);
}

View file

@ -1461,6 +1461,30 @@ void SoftwareGLContext::gl_vertex_pointer(GLint size, GLenum type, GLsizei strid
m_client_vertex_pointer.pointer = pointer;
}
void SoftwareGLContext::gl_color_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer)
{
RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
RETURN_WITH_ERROR_IF(!(size == 3 || size == 4), GL_INVALID_VALUE);
RETURN_WITH_ERROR_IF(!(type == GL_BYTE
|| type == GL_UNSIGNED_BYTE
|| type == GL_SHORT
|| type == GL_UNSIGNED_SHORT
|| type == GL_INT
|| type == GL_UNSIGNED_INT
|| type == GL_FLOAT
|| type == GL_DOUBLE),
GL_INVALID_ENUM);
RETURN_WITH_ERROR_IF(stride < 0, GL_INVALID_VALUE);
m_client_color_pointer.size = size;
m_client_color_pointer.type = type;
m_client_color_pointer.stride = stride;
m_client_color_pointer.pointer = pointer;
}
void SoftwareGLContext::present()
{
m_rasterizer.blit_to(*m_frontbuffer);

View file

@ -77,6 +77,7 @@ public:
virtual void gl_enable_client_state(GLenum cap) override;
virtual void gl_disable_client_state(GLenum cap) override;
virtual void gl_vertex_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) override;
virtual void gl_color_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) override;
virtual void present() override;
@ -233,6 +234,7 @@ private:
};
VertexAttribPointer m_client_vertex_pointer;
VertexAttribPointer m_client_color_pointer;
};
}