一个pygame窗口中有两个OpenGL屏幕

时间:2016-01-30 14:42:59

标签: python opengl pygame opengl-3

我正在使用带有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屏幕?

1 个答案:

答案 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是你屏幕的大小,上面的代码会将之前绘制的任何内容复制到四个较小的屏幕上。