在OpenGL和Pygame中旋转3D多维数据集时遇到问题

时间:2019-06-08 16:31:39

标签: python opengl graphics pygame

我正在尝试在OpenGL和Pygame中创建3D立方体。当您按住一个按钮时,我希望立方体旋转。但是,现在立方体仅在您按下按钮时才旋转,而不是按住。有人可以帮我解决这个问题吗?谢谢!

def main():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)

    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)

    glTranslatef(0.0, 0.0, -5)
    glRotatef(45, 1, 1, 0)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            keys = pygame.key.get_pressed()  # checking pressed keys
            if keys[pygame.K_a]:
                glRotatef(5, 1, 0, 0)
            if keys[pygame.K_s]:
                glRotatef(5, 0, 1, 0)
            if keys[pygame.K_d]:
                glRotatef(5, 0, 0, 1)

1 个答案:

答案 0 :(得分:2)

您的密钥处理代码在for循环内。因此,如果没有事件,您将无法处理键。将代码移出循环:

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    keys = pygame.key.get_pressed()  # checking pressed keys
    if keys[pygame.K_a]:
        glRotatef(5, 1, 0, 0)
    if keys[pygame.K_s]:
        glRotatef(5, 0, 1, 0)
    if keys[pygame.K_d]:
        glRotatef(5, 0, 0, 1)