mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 18:17:41 +00:00
LibGL: Add stubs for glMaterialf
and glMaterialfv
This commit is contained in:
parent
4eb6295a57
commit
9dbc8d7e3c
5 changed files with 66 additions and 1 deletions
|
@ -170,6 +170,13 @@ extern "C" {
|
||||||
// Lighting related defines
|
// Lighting related defines
|
||||||
#define GL_FLAT 0x1D00
|
#define GL_FLAT 0x1D00
|
||||||
#define GL_SMOOTH 0x1D01
|
#define GL_SMOOTH 0x1D01
|
||||||
|
#define GL_AMBIENT 0x1200
|
||||||
|
#define GL_DIFFUSE 0x1201
|
||||||
|
#define GL_SPECULAR 0x1202
|
||||||
|
#define GL_EMISSION 0x1600
|
||||||
|
#define GL_SHININESS 0x1601
|
||||||
|
#define GL_AMBIENT_AND_DIFFUSE 0x1602
|
||||||
|
#define GL_COLOR_INDEXES 0x1603
|
||||||
|
|
||||||
// More blend factors
|
// More blend factors
|
||||||
#define GL_CONSTANT_COLOR 0x8001
|
#define GL_CONSTANT_COLOR 0x8001
|
||||||
|
@ -452,6 +459,8 @@ GLAPI void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum
|
||||||
GLAPI void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
|
GLAPI void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
|
||||||
GLAPI void glNormal3fv(GLfloat const* v);
|
GLAPI void glNormal3fv(GLfloat const* v);
|
||||||
GLAPI void glRasterPos2i(GLint x, GLint y);
|
GLAPI void glRasterPos2i(GLint x, GLint y);
|
||||||
|
GLAPI void glMaterialf(GLenum face, GLenum pname, GLfloat param);
|
||||||
|
GLAPI void glMaterialfv(GLenum face, GLenum pname, GLfloat const* params);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,7 @@ public:
|
||||||
virtual void gl_stencil_op_separate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) = 0;
|
virtual void gl_stencil_op_separate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) = 0;
|
||||||
virtual void gl_normal(GLfloat nx, GLfloat ny, GLfloat nz) = 0;
|
virtual void gl_normal(GLfloat nx, GLfloat ny, GLfloat nz) = 0;
|
||||||
virtual void gl_raster_pos(GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;
|
virtual void gl_raster_pos(GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;
|
||||||
|
virtual void gl_materialv(GLenum face, GLenum pname, GLfloat const* params) = 0;
|
||||||
|
|
||||||
virtual void present() = 0;
|
virtual void present() = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
* Copyright (c) 2021, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
||||||
|
* Copyright (c) 2021, Jelle Raaijmakers <jelle@gmta.nl>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -22,6 +23,17 @@ void glLightfv(GLenum light, GLenum pname, GLfloat* param)
|
||||||
dbgln_if(GL_DEBUG, "glLightfv({}, {}, {}): unimplemented", light, pname, param);
|
dbgln_if(GL_DEBUG, "glLightfv({}, {}, {}): unimplemented", light, pname, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void glMaterialf(GLenum face, GLenum pname, GLfloat param)
|
||||||
|
{
|
||||||
|
VERIFY(face == GL_SHININESS);
|
||||||
|
g_gl_context->gl_materialv(face, pname, ¶m);
|
||||||
|
}
|
||||||
|
|
||||||
|
void glMaterialfv(GLenum face, GLenum pname, GLfloat const* params)
|
||||||
|
{
|
||||||
|
g_gl_context->gl_materialv(face, pname, params);
|
||||||
|
}
|
||||||
|
|
||||||
void glShadeModel(GLenum mode)
|
void glShadeModel(GLenum mode)
|
||||||
{
|
{
|
||||||
g_gl_context->gl_shade_model(mode);
|
g_gl_context->gl_shade_model(mode);
|
||||||
|
|
|
@ -2257,6 +2257,47 @@ void SoftwareGLContext::gl_raster_pos(GLfloat x, GLfloat y, GLfloat z, GLfloat w
|
||||||
m_current_raster_position.clip_coordinate_value = w;
|
m_current_raster_position.clip_coordinate_value = w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoftwareGLContext::gl_materialv(GLenum face, GLenum pname, GLfloat const* params)
|
||||||
|
{
|
||||||
|
APPEND_TO_CALL_LIST_AND_RETURN_IF_NEEDED(gl_materialv, face, pname, params);
|
||||||
|
|
||||||
|
RETURN_WITH_ERROR_IF(!(face == GL_FRONT || face == GL_BACK || face == GL_FRONT_AND_BACK), GL_INVALID_ENUM);
|
||||||
|
|
||||||
|
RETURN_WITH_ERROR_IF(!(pname == GL_AMBIENT
|
||||||
|
|| pname == GL_DIFFUSE
|
||||||
|
|| pname == GL_SPECULAR
|
||||||
|
|| pname == GL_EMISSION
|
||||||
|
|| pname == GL_SHININESS
|
||||||
|
|| pname == GL_AMBIENT_AND_DIFFUSE
|
||||||
|
|| pname == GL_COLOR_INDEXES),
|
||||||
|
GL_INVALID_ENUM);
|
||||||
|
|
||||||
|
GLfloat x, y, z, w;
|
||||||
|
|
||||||
|
switch (pname) {
|
||||||
|
case GL_SHININESS:
|
||||||
|
x = params[0];
|
||||||
|
y = 0.0f;
|
||||||
|
z = 0.0f;
|
||||||
|
w = 0.0f;
|
||||||
|
break;
|
||||||
|
case GL_COLOR_INDEXES:
|
||||||
|
x = params[0];
|
||||||
|
y = params[1];
|
||||||
|
z = params[2];
|
||||||
|
w = 0.0f;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
x = params[0];
|
||||||
|
y = params[1];
|
||||||
|
z = params[2];
|
||||||
|
w = params[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: implement this method
|
||||||
|
dbgln_if(GL_DEBUG, "SoftwareGLContext FIXME: gl_materialv({}, {}, {}, {}, {}, {})", face, pname, x, y, z, w);
|
||||||
|
}
|
||||||
|
|
||||||
void SoftwareGLContext::present()
|
void SoftwareGLContext::present()
|
||||||
{
|
{
|
||||||
m_rasterizer.blit_to(*m_frontbuffer);
|
m_rasterizer.blit_to(*m_frontbuffer);
|
||||||
|
|
|
@ -106,6 +106,7 @@ public:
|
||||||
virtual void gl_stencil_op_separate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) override;
|
virtual void gl_stencil_op_separate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) override;
|
||||||
virtual void gl_normal(GLfloat nx, GLfloat ny, GLfloat nz) override;
|
virtual void gl_normal(GLfloat nx, GLfloat ny, GLfloat nz) override;
|
||||||
virtual void gl_raster_pos(GLfloat x, GLfloat y, GLfloat z, GLfloat w) override;
|
virtual void gl_raster_pos(GLfloat x, GLfloat y, GLfloat z, GLfloat w) override;
|
||||||
|
virtual void gl_materialv(GLenum face, GLenum pname, GLfloat const* params) override;
|
||||||
virtual void present() override;
|
virtual void present() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -271,7 +272,8 @@ private:
|
||||||
decltype(&SoftwareGLContext::gl_stencil_func_separate),
|
decltype(&SoftwareGLContext::gl_stencil_func_separate),
|
||||||
decltype(&SoftwareGLContext::gl_stencil_op_separate),
|
decltype(&SoftwareGLContext::gl_stencil_op_separate),
|
||||||
decltype(&SoftwareGLContext::gl_normal),
|
decltype(&SoftwareGLContext::gl_normal),
|
||||||
decltype(&SoftwareGLContext::gl_raster_pos)>;
|
decltype(&SoftwareGLContext::gl_raster_pos),
|
||||||
|
decltype(&SoftwareGLContext::gl_materialv)>;
|
||||||
|
|
||||||
using ExtraSavedArguments = Variant<
|
using ExtraSavedArguments = Variant<
|
||||||
FloatMatrix4x4>;
|
FloatMatrix4x4>;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue