《OpenGL超级宝典》反弹的正方形动画 出不来?!

ronal7do 2014-11-06 02:30:30

#include <windows.h>
#include <stdio.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

GLfloat x1 = 100.0f;
GLfloat y10 = 150.0f;
GLsizei rsize = 50;
GLfloat xstep = 1.0f;
GLfloat ystep = 1.0f;
GLfloat windowWidth;
GLfloat windowHeight;

void init()
{
glClearColor(0.0f,1.0f,1.0f,1.0f);
}
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,1.0f,0.0f);
glRectf(x1,y10,x1 + rsize,y10 + rsize);
glutSwapBuffers();
}
void TimerFunction(int value)
{
if(x1 > windowWidth - rsize||x1 < 0)
xstep = -xstep;
if(y10 > windowHeight - rsize||y10 < 0)
ystep = -ystep;
if(x1 > windowWidth - rsize)
x1 = windowWidth - rsize - 1;
if(y10 > windowHeight - rsize)
y10 = windowHeight - rsize - 1;
x1 += xstep;
y10 += ystep;

glutPostRedisplay();
glutTimerFunc(33,TimerFunction,1);
}

void ChangeSize(GLsizei w,GLsizei h)
{
if(h == 0)
h = 1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w <= h)
glOrtho(0.0f,250.0f,0.0f,250.0f * h / w,1.0f,-1.0f);
else
glOrtho(0.0f,250.0f * w / h,0.0f,250.0f,1.0f,-1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(100,0);//屏幕左上角为原点(0,0)
glutInitWindowSize(600,600);
glutCreateWindow("test");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(33,TimerFunction,1);
init();
glutMainLoop();
}

入体,程序是教程上面的,不知道为啥就是出不来动画。大家帮忙看看,谢谢。
...全文
73 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧