mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-03 21:10:30 +00:00
LibGL: Implement glUseProgram
This commit is contained in:
parent
1812a169b8
commit
69171e7a05
Notes:
sideshowbarker
2024-07-17 08:34:29 +09:00
Author: https://github.com/sunverwerth Commit: https://github.com/SerenityOS/serenity/commit/69171e7a05 Pull-request: https://github.com/SerenityOS/serenity/pull/16225 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/gmta ✅ Reviewed-by: https://github.com/supercomputer7
4 changed files with 25 additions and 0 deletions
|
@ -825,6 +825,7 @@ GLAPI GLuint glCreateProgram();
|
|||
GLAPI void glDeleteProgram(GLuint program);
|
||||
GLAPI void glAttachShader(GLuint program, GLuint shader);
|
||||
GLAPI void glLinkProgram(GLuint program);
|
||||
GLAPI void glUseProgram(GLuint program);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -1043,6 +1043,11 @@ void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
|
|||
g_gl_context->gl_translate(x, y, z);
|
||||
}
|
||||
|
||||
void glUseProgram(GLuint program)
|
||||
{
|
||||
g_gl_context->gl_use_program(program);
|
||||
}
|
||||
|
||||
void glVertex2d(GLdouble x, GLdouble y)
|
||||
{
|
||||
g_gl_context->gl_vertex(x, y, 0.0, 1.0);
|
||||
|
|
|
@ -239,6 +239,7 @@ public:
|
|||
void gl_delete_program(GLuint program);
|
||||
void gl_attach_shader(GLuint program, GLuint shader);
|
||||
void gl_link_program(GLuint program);
|
||||
void gl_use_program(GLuint program);
|
||||
|
||||
private:
|
||||
void sync_device_config();
|
||||
|
@ -414,6 +415,7 @@ private:
|
|||
NameAllocator m_program_name_allocator;
|
||||
HashMap<GLuint, RefPtr<Shader>> m_allocated_shaders;
|
||||
HashMap<GLuint, RefPtr<Program>> m_allocated_programs;
|
||||
RefPtr<Program> m_current_program;
|
||||
|
||||
struct Listing {
|
||||
|
||||
|
|
|
@ -118,4 +118,21 @@ void GLContext::gl_link_program(GLuint program)
|
|||
(void)program_it->value->link();
|
||||
}
|
||||
|
||||
void GLContext::gl_use_program(GLuint program)
|
||||
{
|
||||
if (program == 0) {
|
||||
m_current_program = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
auto it = m_allocated_programs.find(program);
|
||||
|
||||
// FIXME: implement check "GL_INVALID_VALUE is generated if program is not a value generated by OpenGL."
|
||||
RETURN_WITH_ERROR_IF(it == m_allocated_programs.end(), GL_INVALID_OPERATION);
|
||||
// FIXME: implement check "GL_INVALID_OPERATION is generated if transform feedback mode is active."
|
||||
RETURN_WITH_ERROR_IF(it->value->link_status() != true, GL_INVALID_OPERATION);
|
||||
|
||||
m_current_program = it->value;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue