python - ctypes opengl functions loading error (OSError: exception: access violation writing 0x0000000000000000)
python - ctypes opengl functions loading error (OSError: exception: access violation writing 0x0000000000000000)
我收到一个错误:
OSError: exception: access violation writing 0x0000000000000000
尝试使用 python ctypes
、
加载 opengl 函数时
from ctypes import *
gl = windll.opengl32
get_proc_addr_prototype = WINFUNCTYPE(WINFUNCTYPE(c_uint), c_char_p)
get_proc_addr_paramflags = (1, "Arg1"),
get_proc_addr = get_proc_addr_prototype(("wglGetProcAddress", gl), get_proc_addr_paramflags)
glCreateProgram = get_proc_addr(c_char_p(b"glCreateProgram"))
glCreateProgram()
我以为是因为我还没有创建 opengl 上下文,所以我 运行 这段代码:
from ctypes import *
gl = windll.opengl32
gl.glClear(0x00004000) # GL_COLOR_BUFFER_BIT = 0x00004000
哪个有效,但尝试这样:
from ctypes import *
gl = windll.opengl32
get_proc_addr_prototype = WINFUNCTYPE(WINFUNCTYPE(None, c_uint), c_char_p)
get_proc_addr_paramflags = (1, "Arg1"),
get_proc_addr = get_proc_addr_prototype(("wglGetProcAddress", gl), get_proc_addr_paramflags)
glClear = wgl_get_proc_addr(c_char_p(b"glClear"))
glClear(0x00004000) # GL_COLOR_BUFFER_BIT = 0x00004000
导致同样的错误。
您永远不会创建 OpenGL 上下文。此外,glCreateShader
是否可用完全取决于为其创建上下文的 OpenGL 版本。你为什么首先使用 ctypes
呢?有非常好的 OpenGL Python 绑定可以为您抽象掉所有繁琐的簿记代码。
http://pyopengl.sourceforge.net/
pip install PyOpenGL
我收到一个错误:
OSError: exception: access violation writing 0x0000000000000000
尝试使用 python ctypes
、
from ctypes import *
gl = windll.opengl32
get_proc_addr_prototype = WINFUNCTYPE(WINFUNCTYPE(c_uint), c_char_p)
get_proc_addr_paramflags = (1, "Arg1"),
get_proc_addr = get_proc_addr_prototype(("wglGetProcAddress", gl), get_proc_addr_paramflags)
glCreateProgram = get_proc_addr(c_char_p(b"glCreateProgram"))
glCreateProgram()
我以为是因为我还没有创建 opengl 上下文,所以我 运行 这段代码:
from ctypes import *
gl = windll.opengl32
gl.glClear(0x00004000) # GL_COLOR_BUFFER_BIT = 0x00004000
哪个有效,但尝试这样:
from ctypes import *
gl = windll.opengl32
get_proc_addr_prototype = WINFUNCTYPE(WINFUNCTYPE(None, c_uint), c_char_p)
get_proc_addr_paramflags = (1, "Arg1"),
get_proc_addr = get_proc_addr_prototype(("wglGetProcAddress", gl), get_proc_addr_paramflags)
glClear = wgl_get_proc_addr(c_char_p(b"glClear"))
glClear(0x00004000) # GL_COLOR_BUFFER_BIT = 0x00004000
导致同样的错误。
您永远不会创建 OpenGL 上下文。此外,glCreateShader
是否可用完全取决于为其创建上下文的 OpenGL 版本。你为什么首先使用 ctypes
呢?有非常好的 OpenGL Python 绑定可以为您抽象掉所有繁琐的簿记代码。
http://pyopengl.sourceforge.net/
pip install PyOpenGL