|
|
发表于 2008-3-31 09:45:00
|
显示全部楼层
Re:求助!。。。。。。基本程序问题
我改动了一下效果不是很好,我想你绘制矩形换一个函数应该就可以实现旋转。
#include <gl/glut.h>
GLfloat upDown = 0.0f;
GLfloat Angle = 0.0f;
void Render(void);
void ChangeSize(int w,int h);
void KeyIn(int key,int x,int y);
void Init();
void main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize(800,600);
glutCreateWindow("Dome3");
glutSpecialFunc(KeyIn);
glutReshapeFunc(ChangeSize);
glutDisplayFunc(Render);
Init();
glutMainLoop();
}
void Render(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3ub(255,0,0);
glTranslatef(0.0f,0.0f,upDown);
glPushMatrix();
glRotatef(Angle,0.0f,1.0f,0.0f);
glBegin(GL_QUADS);
glVertex3f(-5.0f, 5.0f, upDown);
glVertex3f(5.0f, 5.0f, upDown);
glVertex3f(5.0f, -5.0f, upDown);
glVertex3f(-5.0f, -5.0f, upDown);
glEnd();
glPopMatrix();
glutSwapBuffers();
}
void ChangeSize(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0f,(GLfloat)w/(GLfloat)h,1.0f,1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f,0.0f,-50.0f);
}
void KeyIn(int key,int x,int y)
{
if(key == GLUT_KEY_UP)
upDown -= 0.5f;
if(key == GLUT_KEY_DOWN)
upDown += 0.5f;
if(key == GLUT_KEY_LEFT)
Angle-=0.5f;
if(key == GLUT_KEY_RIGHT)
Angle+=0.5f;
if(Angle < -1.0f)
Angle = 355.0f;
if(Angle > 355.0f)
Angle = 0.0f;
glutPostRedisplay();
}
void Init()
{
glClearColor(0.0f,0.0f,0.0f,1.0f);
glEnable(GL_DEPTH_TEST);
}
|
|