Skip to content

Commit

Permalink
LibGL: Implement glFogf
Browse files Browse the repository at this point in the history
  • Loading branch information
Quaker762 authored and alimpfard committed Aug 25, 2021
1 parent 7f1cd54 commit f55d2a2
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 0 deletions.
1 change: 1 addition & 0 deletions Userland/Libraries/LibGL/GL/gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ GLAPI void glDepthRange(GLdouble nearVal, GLdouble farVal);
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);

#ifdef __cplusplus
}
Expand Down
1 change: 1 addition & 0 deletions Userland/Libraries/LibGL/GLContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ class GLContext {
virtual void gl_depth_func(GLenum func) = 0;
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 present() = 0;
};
Expand Down
5 changes: 5 additions & 0 deletions Userland/Libraries/LibGL/GLFog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ void glFogfv(GLenum pname, GLfloat* params)
{
g_gl_context->gl_fogfv(pname, params);
}

void glFogf(GLenum pname, GLfloat param)
{
g_gl_context->gl_fogf(pname, param);
}
18 changes: 18 additions & 0 deletions Userland/Libraries/LibGL/SoftwareGLContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1765,6 +1765,24 @@ void SoftwareGLContext::gl_fogfv(GLenum pname, GLfloat* params)
m_rasterizer.set_options(options);
}

void SoftwareGLContext::gl_fogf(GLenum pname, GLfloat param)
{
RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
RETURN_WITH_ERROR_IF(param < 0.0f, GL_INVALID_VALUE);

auto options = m_rasterizer.options();

switch (pname) {
case GL_FOG_DENSITY:
options.fog_density = 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);
Expand Down
1 change: 1 addition & 0 deletions Userland/Libraries/LibGL/SoftwareGLContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ class SoftwareGLContext : public GLContext {
virtual void gl_depth_func(GLenum func) override;
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 present() override;

private:
Expand Down
1 change: 1 addition & 0 deletions Userland/Libraries/LibGL/SoftwareRasterizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ struct RasterizerOptions {
0.0f,
0.0f,
};
GLfloat fog_density { 1.0f };
};

class SoftwareRasterizer final {
Expand Down

0 comments on commit f55d2a2

Please sign in to comment.