4

我在带有 Intel HD 3000 图形芯片组的 Windows 8 64 位笔记本电脑上遇到了 PyOpenGL 3.0.2 问题。任何调用glGenBuffers(1)(在正确的 GL 初始化之后)都会崩溃:

  File ".\sample.py", line 7, in init
    buffer = glGenBuffers(1)
  File "latebind.pyx", line 32, in OpenGL_accelerate.latebind.LateBind.__call__ (src\latebind.c:768)
  File "wrapper.pyx", line 308, in OpenGL_accelerate.wrapper.Wrapper.__call__ (src\wrapper.c:5811)
  File "C:\Python27\lib\site-packages\OpenGL\platform\baseplatform.py", line 379, in __call__
    return self( *args, **named )
WindowsError: exception: access violation writing 0x00000000720CF630

完全相同的脚本适用于其他机器。

我有支持 OpenGL 3.1 的最新版本的 GPU 驱动程序 (15.28.12.64.2932)。

有任何想法吗?

这是示例脚本:

import sys
from OpenGL.GLUT import *
from OpenGL.GL import *
from OpenGL.GLU import *

def init():
    buffer = glGenBuffers(1)

glutInit(sys.argv)
glutInitWindowSize(600, 600)
glutCreateWindow("Sample")
init()
glutMainLoop()
4

2 回答 2

1

即使您的驱动程序支持 OpenGL 3.1,Glut 也会默认为您提供 OpenGL 2.0 上下文。您将不得不要求 3.1 cpntext,可能是这样的:

glutInitContextVersion(3, 1) 
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE) 
glutInitContextProfile(GLUT_CORE_PROFILE)

如果没有适当的 3.1 上下文,任何 3.1 特定调用都会导致您崩溃。

于 2013-03-07T19:05:07.910 回答
1

我终于通过卸载我的整个 Python 64 位发行版并安装 Python 32 位和所有 32 位库来解决了这个问题。此外,我必须使用 PyOpenGL 3.1.a。我不知道是什么导致了 64 位安装的问题。

于 2013-03-11T10:02:49.883 回答