英特尔HD Graphics 3000上的PyOpenGL访问冲突

时间:2013-03-07 17:22:02

标签: python opengl intel pyopengl

我在使用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()

2 个答案:

答案 0 :(得分: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特定的调用都会导致崩溃。

答案 1 :(得分:1)

我终于解决了这个问题,卸载了我的整个Python 64位分发版并安装了32位的Python 32位和所有库。另外我不得不使用PyOpenGL 3.1.a.我不知道是什么原因导致了64位安装的问题。