mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 12:07:44 +00:00
LibGL: Implement glFogi
This commit is contained in:
parent
f55d2a22af
commit
d73cc3d0eb
6 changed files with 27 additions and 0 deletions
|
@ -376,6 +376,7 @@ GLAPI void glDepthFunc(GLenum func);
|
|||
GLAPI void glPolygonMode(GLenum face, GLenum mode);
|
||||
GLAPI void glFogfv(GLenum mode, GLfloat* params);
|
||||
GLAPI void glFogf(GLenum pname, GLfloat param);
|
||||
GLAPI void glFogi(GLenum pname, GLint param);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -79,6 +79,7 @@ public:
|
|||
virtual void gl_polygon_mode(GLenum face, GLenum mode) = 0;
|
||||
virtual void gl_fogfv(GLenum pname, GLfloat* params) = 0;
|
||||
virtual void gl_fogf(GLenum pname, GLfloat params) = 0;
|
||||
virtual void gl_fogi(GLenum pname, GLint param) = 0;
|
||||
|
||||
virtual void present() = 0;
|
||||
};
|
||||
|
|
|
@ -18,3 +18,8 @@ void glFogf(GLenum pname, GLfloat param)
|
|||
{
|
||||
g_gl_context->gl_fogf(pname, param);
|
||||
}
|
||||
|
||||
void glFogi(GLenum pname, GLint param)
|
||||
{
|
||||
g_gl_context->gl_fogi(pname, param);
|
||||
}
|
||||
|
|
|
@ -1783,6 +1783,24 @@ void SoftwareGLContext::gl_fogf(GLenum pname, GLfloat param)
|
|||
m_rasterizer.set_options(options);
|
||||
}
|
||||
|
||||
void SoftwareGLContext::gl_fogi(GLenum pname, GLint param)
|
||||
{
|
||||
RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
|
||||
RETURN_WITH_ERROR_IF(!(param == GL_EXP || param == GL_EXP2 || param != GL_LINEAR), GL_INVALID_ENUM);
|
||||
|
||||
auto options = m_rasterizer.options();
|
||||
|
||||
switch (pname) {
|
||||
case GL_FOG_MODE:
|
||||
options.fog_mode = param;
|
||||
break;
|
||||
default:
|
||||
RETURN_WITH_ERROR_IF(true, GL_INVALID_ENUM);
|
||||
}
|
||||
|
||||
m_rasterizer.set_options(options);
|
||||
}
|
||||
|
||||
void SoftwareGLContext::present()
|
||||
{
|
||||
m_rasterizer.blit_to(*m_frontbuffer);
|
||||
|
|
|
@ -89,6 +89,7 @@ public:
|
|||
virtual void gl_polygon_mode(GLenum face, GLenum mode) override;
|
||||
virtual void gl_fogfv(GLenum pname, GLfloat* params) override;
|
||||
virtual void gl_fogf(GLenum pname, GLfloat param) override;
|
||||
virtual void gl_fogi(GLenum pname, GLint param) override;
|
||||
virtual void present() override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -40,6 +40,7 @@ struct RasterizerOptions {
|
|||
0.0f,
|
||||
};
|
||||
GLfloat fog_density { 1.0f };
|
||||
GLenum fog_mode { GL_EXP };
|
||||
};
|
||||
|
||||
class SoftwareRasterizer final {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue