微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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),)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。