- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
opengl实现二维的简单动画
Opengl实现二维的简单动画#include windows.h#include GL/gl.h#include GL/glu.h#include GL/glut.hGLfloat x1 = 0.0f;GLfloat y1 = 0.0f;GLfloatrsize = 25.0f;// 在x和y方向的步进大小GLfloatxstep = 1.0f;GLfloatystep = 1.0f;// 窗口的大小(使用逻辑笛卡尔坐标系统)GLfloatwindowWidth;GLfloatwindowHeight;// 绘制场景(显示回调函数)voidRenderScene(){ // OpenGL命令,清除颜色缓冲区(使用当前设置的颜色)glClear(GL_COLOR_BUFFER_BIT); // 把当前绘图颜色设置为红色glColor3f(1.0f, 0.0f, 0.0f); // OpenGL命令,用当前的绘图颜色绘制一个填充矩形(提供左上角和右下角的顶点坐标)glRectf(x1, y1, x1 + rsize, y1 - rsize); // 刷新绘图命令,此时所有未执行的OpenGL命令被执行glutSwapBuffers();}// 由GLUT函数库调用,计时器函数voidTimerFunction(int value){ // 在到达右边或者左边时翻转方向,这里的边界选取要结合裁剪区域的定义if (x1 windowWidth - rsize ||x1 -windowWidth) {xstep = -xstep; } // 在到达上边或者下边时翻转方向,这里的边界选取要结合裁剪区域的定义if (y1 windowHeight || y1 -windowHeight + rsize) {ystep = -ystep; } // 移动方块x1 += xstep; y1 += ystep; // 检查边界,防止方块在反弹时窗口变小,使方块出现在新的裁剪区域之外if (x1 (windowWidth - rsize + xstep)) {x1 = windowWidth - rsize -1; } else if (x1 -windowWidth - xstep) {x1 = -windowWidth - 1; } // 检查边界,防止方块在反弹时窗口变小,使方块出现在新的裁剪区域之外if (y1 (windowHeight + ystep)) { y1 = windowHeight - 1; } else if (y1 -windowHeight + rsize - ystep) { y1 = -windowHeight + rsize -1; } // 使用新的坐标重新绘制场景glutPostRedisplay(); // 重新设置计时器函数glutTimerFunc(33, TimerFunction, 1);}// 设置渲染状态voidSetupRC(){ // 设置用于清除窗口的颜色glClearColor(0.0f, 0.0f, 1.0f, 1.0f);}// 当窗口大小改变时由GLUT函数库调用voidChangeSize(GLsizei w, GLsizei h){ // 纵横比GLfloataspectRatio; // 防止被0所除if (0 == h){ h = 1; } // 设置视口为窗口的大小glViewport(0, 0, w, h); // 选择投影矩阵,并重置坐标系统glMatrixMode(GL_PROJECTION);glLoadIdentity(); // 计算窗口的纵横比(像素比)aspectRatio = (GLfloat) w / (GLfloat) h; // 定义裁剪区域(根据窗口的纵横比,并使用正投影) if (w =h) {//宽 高windowWidth = 100.0 ;windowHeight = 100.0 / aspectRatio;glOrtho(-100.0, 100.0, -100 /aspectRatio, 100 / aspectRatio, 1.0, -1.0); } else {//宽 高windowWidth = 100.0 * aspectRatio;windowHeight = 100.0;glOrtho(-100.0 * aspectRatio, 100.0 *aspectRatio, -100.0, 100
文档评论(0)