Pyopengl给我值错误无法识别问题

问题描述

我正在使用python中的opengl入门,并且我拥有与youtuber完全相同的代码,但是它给了我一个错误

pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last):
    File "C:/python files/Opengl/Opengl_cheatsheet.py",line 66,in <module>
    main()   File "C:/python files/Opengl/Opengl_cheatsheet.py",line 61,in main
    cube()   File "C:/python files/Opengl/Opengl_cheatsheet.py",line 39,in cube
    glVertex3fv(vertices[vertex])   File "src/latebind.pyx",in OpenGL_accelerate.latebind.LateBind.__call__
    File "src/wrapper.pyx",line 299,in OpenGL_accelerate.wrapper.Wrapper.__call__
    File "src/wrapper.pyx",line 161,in OpenGL_accelerate.wrapper.PyArgCalculator.c_call
    File "src/wrapper.pyx",line 128,in OpenGL_accelerate.wrapper.PyArgCalculatorElement.c_call
    File "src/wrapper.pyx",line 114,in OpenGL_accelerate.wrapper.PyArgCalculatorElement.c_call
    File "src/arraydatatype.pyx",line 419,in OpenGL_accelerate.arraydatatype.AsArrayTypedSizeChecked.c_call
    ValueError: ('Expected 12 byte array,got 8 byte array',(-1,0),None)

这是我的代码

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.glu import *

#vertices for the cube tuples
vertices = ((1,-1,-1),(1,1,1 -1),1),)

#edge for the cube tuples
edges = ((0,(0,3),4),(2,7),(6,(5,)


def cube():

    glBegin(GL_LInes)

    for edge in edges:
        for vertex in edge:
            glVertex3fv(vertices[vertex])
            
    
    glEnd()

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

    gluPerspective(45,(display[0]/display[1]),0.1,50.0)
    glTranslatef(0.0,0.0,-5)
    glrotatef(0,0)

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

        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

        cube()
        pygame.display.flip()

        pygame.time.wait(10)

main()


    

解决方法

这是一个错字。顶点列表中缺少 ,。 (第三个顶点):

vertices = ((1,-1,-1),(1,1,(-1,1 -1),# <-------
           (-1,1),)