如何解决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 举报,一经查实,本站将立刻删除。