opengl - OpenGL睡眠或者每个帧之间的延迟?

  显示原文与译文双语对照的内容
0 0

所以,我想在每个图形之间延迟这个程序。 我尝试使用睡眠( ),但是如果在 draw() 函数上使用了一个错误,并且在其他地方使用,那么它就不会产生任何影响。

Xcode编译文件,但在运行时指出这里错误:


libsystem_kernel.dylib`__semwait_signal:
0x7fff8fd7937c: movl $33554766, %eax
0x7fff8fd79381: movq %rcx, %r10
0x7fff8fd79384: syscall
0x7fff8fd79386: jae 0x7fff8fd7938d ; __semwait_signal + 17
0x7fff8fd79388: jmpq 0x7fff8fd7a4c8 ; cerror
0x7fff8fd7938d: ret 
0x7fff8fd7938e: nop 
0x7fff8fd7938f: nop 

代码:


void draw()
{
GLint width;

glClear(GL_COLOR_BUFFER_BIT);
glPointSize(10);

int x=0; int y=0;
glBegin(GL_POINTS);


for(x=0; x<500; x++)
{
 for(y=0;y<500; y++)
 {
 glColor3f(rand()%255,rand()%255, rand()%255);
 glVertex2i(rand()%500,rand()%500);
 }
}
sleep(500);
glEnd();
glFlush();
}


int main(int argc, char** argv){


glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow ("Trabalho de Modelagem e Simulação de Processos");


glutDisplayFunc(draw);
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
gluOrtho2D (0.0f, 500.0f, 0.0f, 500.0f);
glutIdleFunc(draw);
glutMainLoop();
return 1;

%7D

时间: 原作者:

0 0

即使它不能解决你的即时问题,你应该考虑重新组织你的程序。 首先,你应该只从 register 发出的显示回调回调,NOT 来自空闲回调,这意味着: 不要将 register draw 作为空闲函数。 相反,你应该将 register 作为空闲函数调用 glutPostRedisplay 或者 glutPostRedisplay 本身的专用函数。 任何长时间的延迟( 长期限意味着任何超过 10毫秒的时间) 都应该使用定时器实现,这样程序就能保持交互。

原作者:
...