《OpenGL超级宝典》反弹的正方形动画 出不来?!
#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();
}
入体,程序是教程上面的,不知道为啥就是出不来动画。大家帮忙看看,谢谢。
...全文
相关推荐
OpenGL超级宝典(第五版) C++源代码
该项目包含《OpenGL超级宝典(第五版)》的C++源代码,涵盖基础到高级的OpenGL图形渲染技术。实现包括三角形绘制、方块移动与反弹动画、混合模式及3D立方体场景渲染等功能,运用GLBatch批处
OpenGL小球自由落体弹起
本文介绍了一个使用OpenGL和GLUT库的简单动画程序,实现了正方形在窗口内的反弹运动。程序包含位置、大小、运动步长等参数设置,并通过定时器函数控制动画效果。此外,还绘制了圆形和水平线,支持窗口尺寸
opengl 小球的碰撞和反弹模拟
该项目基于OpenGL实现多个彩色小球的动态绘制与运动模拟。小球可通过鼠标点击创建并设置初始位置和颜色,支持实时移动及窗口边界的碰撞反弹。核心功能包括鼠标交互、动态重绘、步长控制运动速度以及基础物理碰
OPENGL画矩形动画
本主题聚焦于如何使用OpenGL实现一个矩形动画,其中矩形会不断地移动,并在碰到边界时自动反弹,改变运动方向。首先,我们需要了解OpenGL的基本概念。
Qt + OpenGL + Animation + Rect + 移动的矩形
博客介绍了GLWidget类的实现,该类继承自QGLWidget,用于OpenGL图形渲染。类中包含初始化OpenGL环境、调整视口、渲染场景的方法,以及实现正方形反弹动画的animate()函数。代


工具平台和程序库
