700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 旋转立方体(opengl)

旋转立方体(opengl)

时间:2022-01-01 21:11:39

相关推荐

旋转立方体(opengl)

#include <GL/glut.h>

GLfloat rquad; //立方体旋转角度

void init(void)

{

glClearColor(0.0f,0.0f,0.0f,0.0f);

glShadeModel(GL_SMOOTH);

glEnable(GL_DEPTH_TEST); //激活深度测试,以隐藏被遮挡面

}

void display(void)

{

//清除颜色缓存和深度缓存

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

glTranslatef(0.0f,0.0f,-7.0f);

glRotatef(rquad,1.0f,1.0f,1.0f);

glBegin(GL_QUADS);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(1.0f,1.0f,-1.0f);

glVertex3f(-1.0f,1.0f,-1.0f);

glVertex3f(-1.0f,1.0f,1.0f);

glVertex3f(1.0f,1.0f,-1.0f);

glColor3f(1.0f,0.5f,0.0f);

glVertex3f(1.0f,-1.0f,1.0f);

glVertex3f(-1.0f,-1.0f,1.0f);

glVertex3f(-1.0f,-1.0f,-1.0f);

glVertex3f(1.0f,-1.0f,-1.0f);

glColor3f(1.0f,0.0f,0.0f);

glVertex3f(1.0f,1.0f,1.0f);

glVertex3f(-1.0f,1.0f,1.0f);

glVertex3f(-1.0f,-1.0f,1.0f);

glVertex3f(1.0f,-1.0f,1.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,-1.0f,-1.0f);

glVertex3f(-1.0f,-1.0f,-1.0f);

glVertex3f(-1.0f,1.0f,-1.0f);

glVertex3f(1.0f,1.0f,-1.0f);

glColor3f(0.0f,0.0f,1.0f);

glVertex3f(-1.0f,1.0f,1.0f);

glVertex3f(-1.0f,1.0f,-1.0f);

glVertex3f(-1.0f,-1.0f,-1.0f);

glVertex3f(-1.0f,-1.0f,1.0f);

glColor3f(1.0f,0.0f,1.0f);

glVertex3f(1.0f,1.0f,-1.0f);

glVertex3f(1.0f,1.0f,1.0f);

glVertex3f(1.0f,-1.0f,1.0f);

glVertex3f(-1.0f,-1.0f,-1.0f);

glEnd();

rquad-=0.2f; //加一个角度

glutSwapBuffers(); //交换双缓存

}

void reshape(int width,int height)

{

glViewport(0,0,width,height);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

void keyboard(unsigned char key,int x,int y)

{

switch (key)

{

case 27:

//exit(0);

break;

default:

break;

}

}

int main(int argc,char** argv)

{

glutInit(&argc,argv);

//使用双缓存模式和深度缓存

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize(600,350);

glutInitWindowPosition(200,200);

glutCreateWindow("旋转动画");

init();

glutDisplayFunc(display);

glutReshapeFunc(reshape);

glutKeyboardFunc(keyboard);

glutIdleFunc(display); //设置空闲时用的函数

glutMainLoop();

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。