博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL——旋转的六边形(动画)
阅读量:6975 次
发布时间:2019-06-27

本文共 2479 字,大约阅读时间需要 8 分钟。

代码:

#include
#include
#include
#include
using namespace std;const double TWO_PI = 6.2831853;GLsizei winWidth = 500, winHeight = 500;GLuint regHex;static GLfloat rotTheta;class scrPt {public: GLint x, y;};void init(){ scrPt hexVertex; GLdouble hexTheta; glClearColor(1.0, 1.0, 1.0, 0.0); //创建1个显示列表 regHex = glGenLists(1); //编译显示列表 glNewList(regHex, GL_COMPILE); glColor3f(209.0 / 255.0, 73.0 / 255.0, 78.0 / 255.0); glBegin(GL_POLYGON); for (GLint k = 0; k < 6; k++) { hexTheta = TWO_PI * k / 6; hexVertex.x = 150 + 100 * cos(hexTheta); hexVertex.y = 150 + 100 * sin(hexTheta); glVertex2i(hexVertex.x, hexVertex.y); } glEnd(); glEndList();}void displayHex(){ glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); //旋转操作 glRotatef(rotTheta, 0.0, 0.0, 1.0); //执行显示列表 glCallList(regHex); glPopMatrix(); //互换缓存 glutSwapBuffers(); glFlush();}//计算增加的旋转角度void rotateHex(){ rotTheta += 3.0; if (rotTheta > 360.0) { rotTheta -= 360.0; } //标记当前窗口需要重新绘制 //通过glutMainLoop下一次循环时,窗口显示将被回调以重新显示窗口的正常面板 glutPostRedisplay();}void winReshapeFcn(GLint newWidth, GLint newHeight){ glViewport(0, 0, (GLsizei)newWidth, (GLsizei)newHeight); glMatrixMode(GL_PROJECTION); //重置当前指定的矩阵为单位矩阵,相当于复位操作 glLoadIdentity(); gluOrtho2D(-320.0, 320.0, -320.0, 320.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT);}void mouseFcn(GLint button, GLint action, GLint x, GLint y){ switch (button) { case GLUT_LEFT_BUTTON: //鼠标左键,开始旋转 if (action == GLUT_DOWN) { //全局的回调函数,如果启用则rotateHex会被不断调用,直到有窗口事件发生 glutIdleFunc(rotateHex); } break; case GLUT_RIGHT_BUTTON: //鼠标右键,停止旋转 if (action == GLUT_DOWN) { //参数为NULL说明不改变 glutIdleFunc(NULL); } break; defalut: break; }}int main(int argc, char* argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowPosition(100, 100); glutInitWindowSize(winWidth, winHeight); glutCreateWindow("第一个动画程序"); init(); glutDisplayFunc(displayHex); glutReshapeFunc(winReshapeFcn); glutMouseFunc(mouseFcn); glutMainLoop(); system("pause"); return 0;}

运行结果:

 

 

转载地址:http://poesl.baihongyu.com/

你可能感兴趣的文章
《安娜卡列尼娜》文本生成——利用 TensorFlow 构建 LSTM 模型
查看>>
《C语言程序设计》一 第 3 章 程序的控制结构Ⅰ——选择结构程序设计
查看>>
二十名工资最高的科技高管 仅有一家是纯安全公司
查看>>
《 嵌入式系统设计与实践》一一1.1 编译器、编程语言以及面向对象编程
查看>>
TensorFlow教程之完整教程 2.10 偏微分方程
查看>>
它是中国人口最小的城市,却美得像个意外!
查看>>
加码远程医疗 视频通信公司Vidyo获得医疗企业巨额投资
查看>>
高通输了官司,需返还黑莓8.15亿专利费
查看>>
Facebook盯上修图应用Prisma 展示类似应用
查看>>
来Snapchat和QQ看看,什么叫年轻人的大生意
查看>>
硅谷基金为什么投资iPhone黑客的初创企业
查看>>
高通要赔韩国59亿 国产企业能否借机争取自身利益
查看>>
Dell'Oro指出2017年WDM市场将维持增长
查看>>
移动医疗最严监管来袭:大批在线医疗公司将死
查看>>
宣武医院:让物联网为智慧医疗添翼
查看>>
城市更智慧生活更便捷
查看>>
新型病毒DoubleAgent曝光:攻击计算机前先入侵防病毒软件
查看>>
这款Chrome扩展:能够提升空中WiFi的页面打开速度
查看>>
服务提供商收入下降12% 思科降低Q2财政预期
查看>>
四川信息安全产业今年产值将达400亿元
查看>>