从框架边界弹出一个实心球体

时间:2016-04-15 19:00:52

标签: opengl

  

使用计时器和glTranslate功能可以帮助我移动球体。但是我如何从框架边界反弹回来?   或者有没有其他方法来实现相同的?   我已经尝试使用for循环来连续翻译球体而不使用计时器功能。在这种方法中,我必须使用glOrtho限制和glTranstale函数手动计算方向点的变化,而glTranstale函数又没有任何意义。

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
void Timer(int ex)
{ 
    glutPostRedisplay();
    glutTimerFunc(20,Timer,0);
}
void init(void) 
{   
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_DEPTH_TEST);
}
void display(void)
{
   int i,j;
   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glTranslatef(0.08,0.08,0.0);
   glutSolidSphere (1.0, 20, 16);
   glFlush ();
} 
void reshape (int w, int h)
{
   glViewport (0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity(); 
   glOrtho (-10, 10, -10,10, -10.0, 10.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize (800, 800); 
    glutInitWindowPosition (100, 100);
    glutCreateWindow (argv[0]);
    init ();
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape);
    glutTimerFunc(0,Timer,0);
    glutMainLoop();
    return 0;
 }

0 个答案:

没有答案