mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 03:37:43 +00:00
LibGL: Implement glScalef
This commit is contained in:
parent
55b3ecfbd3
commit
ea0df0b5da
5 changed files with 24 additions and 0 deletions
|
@ -83,6 +83,7 @@ GLAPI void glMatrixMode(GLenum mode);
|
||||||
GLAPI void glPushMatrix();
|
GLAPI void glPushMatrix();
|
||||||
GLAPI void glPopMatrix();
|
GLAPI void glPopMatrix();
|
||||||
GLAPI void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
|
GLAPI void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
|
||||||
|
GLAPI void glScalef(GLfloat x, GLfloat y, GLfloat z);
|
||||||
GLAPI void glTranslatef(GLfloat x, GLfloat y, GLfloat z);
|
GLAPI void glTranslatef(GLfloat x, GLfloat y, GLfloat z);
|
||||||
GLAPI void glVertex3f(GLfloat x, GLfloat y, GLfloat z);
|
GLAPI void glVertex3f(GLfloat x, GLfloat y, GLfloat z);
|
||||||
GLAPI void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
|
GLAPI void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
|
|
|
@ -29,6 +29,7 @@ public:
|
||||||
virtual void gl_push_matrix() = 0;
|
virtual void gl_push_matrix() = 0;
|
||||||
virtual void gl_pop_matrix() = 0;
|
virtual void gl_pop_matrix() = 0;
|
||||||
virtual void gl_rotate(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) = 0;
|
virtual void gl_rotate(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) = 0;
|
||||||
|
virtual void gl_scale(GLdouble x, GLdouble y, GLdouble z) = 0;
|
||||||
virtual void gl_translate(GLdouble x, GLdouble y, GLdouble z) = 0;
|
virtual void gl_translate(GLdouble x, GLdouble y, GLdouble z) = 0;
|
||||||
virtual void gl_vertex(GLdouble x, GLdouble y, GLdouble z, GLdouble w) = 0;
|
virtual void gl_vertex(GLdouble x, GLdouble y, GLdouble z, GLdouble w) = 0;
|
||||||
virtual void gl_viewport(GLint x, GLint y, GLsizei width, GLsizei height) = 0;
|
virtual void gl_viewport(GLint x, GLint y, GLsizei width, GLsizei height) = 0;
|
||||||
|
|
|
@ -30,6 +30,11 @@ void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
|
||||||
g_gl_context->gl_rotate(angle, x, y, z);
|
g_gl_context->gl_rotate(angle, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void glScalef(GLfloat x, GLfloat y, GLfloat z)
|
||||||
|
{
|
||||||
|
g_gl_context->gl_scale(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
|
void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
|
||||||
{
|
{
|
||||||
g_gl_context->gl_translate(x, y, z);
|
g_gl_context->gl_translate(x, y, z);
|
||||||
|
|
|
@ -594,6 +594,22 @@ void SoftwareGLContext::gl_rotate(GLdouble angle, GLdouble x, GLdouble y, GLdoub
|
||||||
m_error = GL_NO_ERROR;
|
m_error = GL_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoftwareGLContext::gl_scale(GLdouble x, GLdouble y, GLdouble z)
|
||||||
|
{
|
||||||
|
if (m_in_draw_state) {
|
||||||
|
m_error = GL_INVALID_OPERATION;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_current_matrix_mode == GL_MODELVIEW) {
|
||||||
|
m_model_view_matrix = m_model_view_matrix * FloatMatrix4x4::scale({ static_cast<float>(x), static_cast<float>(y), static_cast<float>(z) });
|
||||||
|
} else if (m_current_matrix_mode == GL_PROJECTION) {
|
||||||
|
m_projection_matrix = m_projection_matrix * FloatMatrix4x4::scale({ static_cast<float>(x), static_cast<float>(y), static_cast<float>(z) });
|
||||||
|
}
|
||||||
|
|
||||||
|
m_error = GL_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
void SoftwareGLContext::gl_translate(GLdouble x, GLdouble y, GLdouble z)
|
void SoftwareGLContext::gl_translate(GLdouble x, GLdouble y, GLdouble z)
|
||||||
{
|
{
|
||||||
if (m_in_draw_state) {
|
if (m_in_draw_state) {
|
||||||
|
|
|
@ -29,6 +29,7 @@ public:
|
||||||
virtual void gl_push_matrix() override;
|
virtual void gl_push_matrix() override;
|
||||||
virtual void gl_pop_matrix() override;
|
virtual void gl_pop_matrix() override;
|
||||||
virtual void gl_rotate(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) override;
|
virtual void gl_rotate(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) override;
|
||||||
|
virtual void gl_scale(GLdouble x, GLdouble y, GLdouble z) override;
|
||||||
virtual void gl_translate(GLdouble x, GLdouble y, GLdouble z) override;
|
virtual void gl_translate(GLdouble x, GLdouble y, GLdouble z) override;
|
||||||
virtual void gl_vertex(GLdouble x, GLdouble y, GLdouble z, GLdouble w) override;
|
virtual void gl_vertex(GLdouble x, GLdouble y, GLdouble z, GLdouble w) override;
|
||||||
virtual void gl_viewport(GLint x, GLint y, GLsizei width, GLsizei height) override;
|
virtual void gl_viewport(GLint x, GLint y, GLsizei width, GLsizei height) override;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue