mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 13:30:12 +01:00
draw a box, press 'a' to animate
This commit is contained in:
parent
9d0ae967d4
commit
271d504ed7
1 changed files with 67 additions and 4 deletions
|
|
@ -34,18 +34,20 @@ struct uniform_info {
|
||||||
static struct uniform_info Uniforms[] = {
|
static struct uniform_info Uniforms[] = {
|
||||||
{ "LightPosition", 3, -1, { 0.57737, 0.57735, 0.57735, 0.0 } },
|
{ "LightPosition", 3, -1, { 0.57737, 0.57735, 0.57735, 0.0 } },
|
||||||
{ "SurfaceColor", 3, -1, { 0.8, 0.8, 0.2, 0 } },
|
{ "SurfaceColor", 3, -1, { 0.8, 0.8, 0.2, 0 } },
|
||||||
{ "BumpDensity", 1, -1, { 16.0, 0, 0, 0 } },
|
{ "BumpDensity", 1, -1, { 10.0, 0, 0, 0 } },
|
||||||
{ "BumpSize", 1, -1, { 0.15, 0, 0, 0 } },
|
{ "BumpSize", 1, -1, { 0.125, 0, 0, 0 } },
|
||||||
{ "SpecularFactor", 1, -1, { 0.5, 0, 0, 0 } },
|
{ "SpecularFactor", 1, -1, { 0.5, 0, 0, 0 } },
|
||||||
{ NULL, 0, 0, { 0, 0, 0, 0 } }
|
{ NULL, 0, 0, { 0, 0, 0, 0 } }
|
||||||
};
|
};
|
||||||
|
|
||||||
static GLint win = 0;
|
static GLint win = 0;
|
||||||
|
|
||||||
static GLfloat xRot = 0.0f, yRot = 0.0f, zRot = 0.0f;
|
static GLfloat xRot = 20.0f, yRot = 0.0f, zRot = 0.0f;
|
||||||
|
|
||||||
static GLuint tangentAttrib;
|
static GLuint tangentAttrib;
|
||||||
|
|
||||||
|
static GLboolean Anim = GL_FALSE;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
CheckError(int line)
|
CheckError(int line)
|
||||||
|
|
@ -74,6 +76,63 @@ Square(GLfloat size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
Cube(GLfloat size)
|
||||||
|
{
|
||||||
|
/* +X */
|
||||||
|
glPushMatrix();
|
||||||
|
glRotatef(90, 0, 1, 0);
|
||||||
|
glTranslatef(0, 0, size);
|
||||||
|
Square(size);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
/* -X */
|
||||||
|
glPushMatrix();
|
||||||
|
glRotatef(-90, 0, 1, 0);
|
||||||
|
glTranslatef(0, 0, size);
|
||||||
|
Square(size);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
/* +Y */
|
||||||
|
glPushMatrix();
|
||||||
|
glRotatef(90, 1, 0, 0);
|
||||||
|
glTranslatef(0, 0, size);
|
||||||
|
Square(size);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
/* -Y */
|
||||||
|
glPushMatrix();
|
||||||
|
glRotatef(-90, 1, 0, 0);
|
||||||
|
glTranslatef(0, 0, size);
|
||||||
|
Square(size);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
|
||||||
|
/* +Z */
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(0, 0, size);
|
||||||
|
Square(size);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
/* -Z */
|
||||||
|
glPushMatrix();
|
||||||
|
glRotatef(180, 0, 1, 0);
|
||||||
|
glTranslatef(0, 0, size);
|
||||||
|
Square(size);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
Idle(void)
|
||||||
|
{
|
||||||
|
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||||
|
yRot = t * 0.05;
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
Redisplay(void)
|
Redisplay(void)
|
||||||
{
|
{
|
||||||
|
|
@ -84,7 +143,7 @@ Redisplay(void)
|
||||||
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
|
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
|
||||||
glRotatef(zRot, 0.0f, 0.0f, 1.0f);
|
glRotatef(zRot, 0.0f, 0.0f, 1.0f);
|
||||||
|
|
||||||
Square(2.0);
|
Cube(1.5);
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
|
|
@ -128,6 +187,10 @@ Key(unsigned char key, int x, int y)
|
||||||
(void) y;
|
(void) y;
|
||||||
|
|
||||||
switch(key) {
|
switch(key) {
|
||||||
|
case 'a':
|
||||||
|
Anim = !Anim;
|
||||||
|
glutIdleFunc(Anim ? Idle : NULL);
|
||||||
|
break;
|
||||||
case 'z':
|
case 'z':
|
||||||
zRot += step;
|
zRot += step;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue