用opengl寫的一個簡單的代碼,其中注冊了定時器回調(diào)函數(shù)ontime(),在ontime()中改變point1_x,point1_y的值,然后調(diào)用glutPostRedisplay()重繪窗口。#include <Windows.h>#include <gl/glut.h>#include <math.h>//-----全局變量----------------------GLfloat point1_x=0.25;GLfloat point1_y=0.25;GLfloat point2_x=0.75;GLfloat point2_y=0.25;//-----glutTimerFunc()的響應(yīng)函數(shù)------void ontime(int time){point1_y +=0.1;point2_y +=0.1;}//-----顯示函數(shù)-----------------------void display(){glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,1.0,1.0);glBegin(GL_LINES);glVertex3f(point1_x,point1_y,0.0);glVertex3f(point2_x,point2_y,0.0);glEnd();glFlush();}//------初始化函數(shù)void init(void){glClearColor(0.0,0.0,0.0,0.0);glShadeModel(GL_FLAT);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);}int main(int argc,char** argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(250,250);glutInitWindowPosition(100,100);glutCreateWindow("hello");init();glutDisplayFunc(display);glutTimerFunc(1000,ontime,0.1);glutMainLoop();return 0;}ontime函數(shù)貼錯了void ontime(int time){point1_y +=0.1;point2_y +=0.1;glutPostRedisplay();}
1 回答

MM們
TA貢獻1886條經(jīng)驗 獲得超2個贊
void ontime(int time)
{
point1_y +=0.1;
point2_y +=0.1;
glutPostRedisplay();
glutTimerFunc(1000,ontime,0.1); /*增加這一行,再試試效果,一次調(diào)用就執(zhí)行一次,這樣嵌套使用可以實現(xiàn)循環(huán)的效果,不過cpu可能會占有的多些。*/
}
- 1 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消