#include <glut.h>
#include <stdlib.h>
static GLfloat spin = 0;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 2.0, 1.0);
glPushMatrix();
glTranslatef(-160,0,0);
glRotatef(spin, 0.0, 1.0, 0.0);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(-40.0,-40.0, 0.0); // lower left vertex
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f( 40.0,-40.0,0.0); // lower right vertex
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f( 0.0, 30.0, 0.0); // upper vertex
glEnd( );
glPopMatrix();
glPushMatrix();
glRotatef(spin, 1.0, 1.0, 0.0);
//glRectf(-30.0, -30.0, 30.0, 30.0);
glBegin(GL_QUADS);
glColor4f(1,0,0,2);
glVertex3f(-30, -30, 0.0);
glColor4f(1,1,1,1);
glVertex3f(-30, 30, 0.0);
glColor4f(0,0,1,2);
glVertex3f(30, 30, 0.0);
glColor4f(0,1,0,1);
glVertex3f(30, -30, 0.0);
glEnd();
glPopMatrix();
glPushMatrix();
glTranslatef(80,0,0);
glRotatef(spin, 1.0, 1.0, 1.0);
//glRectf(-30.0, -30.0, 30.0, 30.0);
glBegin(GL_QUADS);
glColor4f(1,0,0,2);
glVertex3f(-30, -30, 0.0);
glColor4f(1,1,1,1);
glVertex3f(-30, 30, 0.0);
glColor4f(0,0,1,2);
glVertex3f(30, 30, 0.0);
glColor4f(0,1,0,1);
glVertex3f(30, -30, 0.0);
glEnd();
glPopMatrix();
glPushMatrix();
glTranslatef(-80,0,0);
glRotatef(spin, 1.0, 0.0, 0.0);
//glRectf(-30.0, -30.0, 30.0, 30.0);
glBegin(GL_QUADS);
glColor4f(1,0,0,2);
glVertex3f(-30, -30, 0.0);
glColor4f(1,1,1,1);
glVertex3f(-30, 30, 0.0);
glColor4f(0,0,1,2);
glVertex3f(30, 30, 0.0);
glColor4f(0,1,0,1);
glVertex3f(30, -30, 0.0);
glEnd();
glPopMatrix();
glFlush();
}
void spinDisplay_left(void)
{
spin = spin + 0.3;
if (spin > 360.0)
spin = spin - 360.0;
glutPostRedisplay();
}
void spinDisplay_right(void)
{
spin = spin - .1;
if (spin > 360.0)
spin = spin - 360.0;
glutPostRedisplay();
}
/*void my_keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 'l':
spinDisplay_left();
break;
case 'r':
spinDisplay_right();
break;
case 's':
glutIdleFunc(NULL);
break;
default:
break;
}
}*/
/*void spe_key(unsigned char key, int x, int y)
{
switch (key) {
case GLUT_KEY_LEFT:
spinDisplay_left();
break;
case GLUT_KEY_RIGHT:
spinDisplay_right();
break;
default:
break;
}
}*/
void my_mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(spinDisplay_left);
break;
case GLUT_MIDDLE_BUTTON:
case GLUT_RIGHT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(NULL);
//glutIdleFunc(NULL); // make idle function inactive
break;
default:
break;
}
}
void my_reshape(int w, int h)
{
glViewport (0,0,900,900);
//glViewport (0,0,w, h);
}
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glOrtho(-250.0, 250.0, -250.0, 250.0, -250, 250);
}
/*
*
* Register mouse input callback functions
*/
int main()
{
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (700, 700);
glutInitWindowPosition (50, 50);
glutCreateWindow ("mist");
init();
glutDisplayFunc(display);
glutReshapeFunc(my_reshape);
//glutKeyboardFunc(my_keyboard);
//glutSpecialFunc(spe_key);
glutMouseFunc(my_mouse);
glutMainLoop();
return 0; /* ANSI C requires main to return int. */
}
asn.rar_Different
版权申诉
161 浏览量
2022-09-24
03:45:07
上传
评论
收藏 1KB RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/5df8bff20ad645abb899a1a8333a748d_weixin_42651281.jpg!1)
小波思基
- 粉丝: 74
- 资源: 1万+
最新资源
- 以下是一些适用于英语六级作文的万能句型模板,涵盖了引言、正文和结论部分的各类表达方式.docx
- MATLAB中的非线性规划
- 进行C语言面试资格确认是招聘过程中一个重要的步骤,目的是确保候选人具备足够的C语言编程能力和知识.docx
- Java 轻量级的集群负载均衡设计
- 纹身师个人网站模板.jpg
- 在C语言中,连接两个字符串(即将一个字符串附加到另一个字符串的末尾)通常可以使用标准库中的 `strcat` 函数.docx
- 数据库管理工具:dbeaver-ce-23.1.1-stable.x86-64.rpm
- 以下是几个具体竞赛题目的详细解答,包括建模思路、方法和步骤 .docx
- 一份关于全国大学生建模大赛的相关教程!!
- 以下是关于计算机网络和现代通信组网的详细教程、案例和相关项目的推荐.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)