我正在使用带有opengl的pygame,但是我在同一个pygame窗口中设置了许多opengl屏幕(或“相机”)时遇到了问题。我的代码就像
{initialize the screen using pygame.display.set_mode, glViewport, gluPersepctive etc}
while 1:
{obtain pressed keys from the keyboard and do stuff}
{draw opengl objects}
pygame.display.flip()
现在,我想要的是做四次所有这一切,并在同一个pygame窗口中的四个不同位置绘制屏幕。我试图将opengl绘图放在for循环中并更改glViewport但没有取得任何进展。那么我应该运行四次命令来绘制四个不同的opengl屏幕?
答案 0 :(得分:0)
实际上我发现了代码的问题。纠正的(伪)代码低于
{initialize the screen using pygame.display.set_mode, glViewport, gluPersepctive etc}
screen_params=[(0.,0.,0.5,0.5),(0.5,0.5,0.5,0.5),(0.,0.5,0.5,0.5),(0.5,0.,0.5,0.5)]
while 1:
{obtain pressed keys from the keyboard and do stuff}
glClearColor(1.0, 1.0, 1.0, 0.0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
for s in screen_params:
glViewport(int(WIDTH*S[0]), int(HEIGHT*S[1]), int(WIDTH*S[2]), int(HEIGHT*S[3]))
{draw opengl objects}
pygame.display.flip()
关键是不要在每个循环(duh)中运行Clear命令,这是我之前做过的,但如果WIDTH和HEIGHT是你屏幕的大小,上面的代码会将之前绘制的任何内容复制到四个较小的屏幕上。