1
因此,我试图在每个绘图之间对这个程序进行延迟。 我尝试过使用Sleep(),但是如果在draw()函数上使用它,会给我一个错误,并且如果在别处使用它,则不起作用。OpenGL睡眠或每帧之间的延迟?
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;
}
请注意您的大小写。如果这是Windows,它是'睡眠',而不是'睡眠'。另外,我不会把它放在即时模式的东西里面。把它放在'glFlush()'之后。如果您收到“错误”,向我们显示错误会有帮助。这样做也将帮助你进入*阅读*错误的例程。 – paddy
嗯,我的道歉。我最初并没有看到这个错误,或者在我看完问题之后编辑它。尝试关于从即时模式部分删除睡眠的建议。我的猜测是,当你正在将数据传递给GL时,你的内核不想睡觉。 – paddy
是的,使用睡眠或睡眠,而不是给我错误或运行时没有效果。 – Tehort