mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 03:37:43 +00:00
LibGL: Implement glGetIntegerv
This commit is contained in:
parent
0b67369830
commit
8ad42e6771
5 changed files with 28 additions and 0 deletions
|
@ -64,6 +64,8 @@ extern "C" {
|
||||||
|
|
||||||
// Alpha blending
|
// Alpha blending
|
||||||
#define GL_BLEND 0x0BE2
|
#define GL_BLEND 0x0BE2
|
||||||
|
#define GL_BLEND_SRC_ALPHA 0x0302
|
||||||
|
#define GL_BLEND_DST_ALPHA 0x0304
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
#define GL_VENDOR 0x1F00
|
#define GL_VENDOR 0x1F00
|
||||||
|
@ -358,6 +360,7 @@ GLAPI void glBindTexture(GLenum target, GLuint texture);
|
||||||
GLAPI void glActiveTexture(GLenum texture);
|
GLAPI void glActiveTexture(GLenum texture);
|
||||||
GLAPI void glGetFloatv(GLenum pname, GLfloat* params);
|
GLAPI void glGetFloatv(GLenum pname, GLfloat* params);
|
||||||
GLAPI void glGetBooleanv(GLenum pname, GLboolean* data);
|
GLAPI void glGetBooleanv(GLenum pname, GLboolean* data);
|
||||||
|
GLAPI void glGetIntegerv(GLenum pname, GLint* data);
|
||||||
GLAPI void glDepthMask(GLboolean flag);
|
GLAPI void glDepthMask(GLboolean flag);
|
||||||
GLAPI void glEnableClientState(GLenum cap);
|
GLAPI void glEnableClientState(GLenum cap);
|
||||||
GLAPI void glDisableClientState(GLenum cap);
|
GLAPI void glDisableClientState(GLenum cap);
|
||||||
|
|
|
@ -73,6 +73,7 @@ public:
|
||||||
virtual void gl_draw_elements(GLenum mode, GLsizei count, GLenum type, const void* indices) = 0;
|
virtual void gl_draw_elements(GLenum mode, GLsizei count, GLenum type, const void* indices) = 0;
|
||||||
virtual void gl_color_mask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = 0;
|
virtual void gl_color_mask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = 0;
|
||||||
virtual void gl_get_booleanv(GLenum pname, GLboolean* data) = 0;
|
virtual void gl_get_booleanv(GLenum pname, GLboolean* data) = 0;
|
||||||
|
virtual void gl_get_integerv(GLenum pname, GLint* data) = 0;
|
||||||
|
|
||||||
virtual void present() = 0;
|
virtual void present() = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -100,6 +100,11 @@ void glGetBooleanv(GLenum pname, GLboolean* data)
|
||||||
g_gl_context->gl_get_booleanv(pname, data);
|
g_gl_context->gl_get_booleanv(pname, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void glGetIntegerv(GLenum pname, GLint* data)
|
||||||
|
{
|
||||||
|
g_gl_context->gl_get_integerv(pname, data);
|
||||||
|
}
|
||||||
|
|
||||||
void glDepthMask(GLboolean flag)
|
void glDepthMask(GLboolean flag)
|
||||||
{
|
{
|
||||||
g_gl_context->gl_depth_mask(flag);
|
g_gl_context->gl_depth_mask(flag);
|
||||||
|
|
|
@ -1416,6 +1416,24 @@ void SoftwareGLContext::gl_get_booleanv(GLenum pname, GLboolean* data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoftwareGLContext::gl_get_integerv(GLenum pname, GLint* data)
|
||||||
|
{
|
||||||
|
RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
|
||||||
|
|
||||||
|
switch (pname) {
|
||||||
|
case GL_BLEND_SRC_ALPHA:
|
||||||
|
*data = m_blend_source_factor;
|
||||||
|
break;
|
||||||
|
case GL_BLEND_DST_ALPHA:
|
||||||
|
*data = m_blend_destination_factor;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// According to the Khronos docs, we always return GL_INVALID_ENUM if we encounter a non-accepted value
|
||||||
|
// for `pname`
|
||||||
|
RETURN_WITH_ERROR_IF(true, GL_INVALID_ENUM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SoftwareGLContext::gl_depth_mask(GLboolean flag)
|
void SoftwareGLContext::gl_depth_mask(GLboolean flag)
|
||||||
{
|
{
|
||||||
APPEND_TO_CALL_LIST_AND_RETURN_IF_NEEDED(gl_depth_mask, flag);
|
APPEND_TO_CALL_LIST_AND_RETURN_IF_NEEDED(gl_depth_mask, flag);
|
||||||
|
|
|
@ -83,6 +83,7 @@ public:
|
||||||
virtual void gl_draw_elements(GLenum mode, GLsizei count, GLenum type, const void* indices) override;
|
virtual void gl_draw_elements(GLenum mode, GLsizei count, GLenum type, const void* indices) override;
|
||||||
virtual void gl_color_mask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) override;
|
virtual void gl_color_mask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) override;
|
||||||
virtual void gl_get_booleanv(GLenum pname, GLboolean* data) override;
|
virtual void gl_get_booleanv(GLenum pname, GLboolean* data) override;
|
||||||
|
virtual void gl_get_integerv(GLenum pname, GLint* data) override;
|
||||||
virtual void present() override;
|
virtual void present() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue