使用pygtkglext的着色器

1 投票
2 回答
532 浏览
提问于 2025-04-15 16:57

有没有人知道怎么在gtk-opengl窗口中使用glsl着色器?在使用glut的时候,所有的glCreateProgram等函数都能正常工作,但当我尝试把相同的gl代码放到pygtkglext窗口时,它却报了NullReference的错误:

OpenGL.error.NullFunctionError: Attempt to call an undefined function glCreateProgram, check for bool(glCreateProgram) before calling

于是我尝试了from OpenGL.GL.ARB.shader_objects import *,但结果还是差不多:

OpenGL.error.NullFunctionError: Attempt to call an undefined function glCreateProgramObjectARB, check for bool(glCreateProgramObjectARB) before calling

任何建议都很有帮助。

2 个回答

0

获取OpenGL的入口点是通过一个叫做GetProcAddress的程序来实现的。我猜NULL指针就是指向glCreateProgramObjectARB这个函数的指针。

这和安装在驱动程序上的库有很大关系。你现在的电脑上运行的是哪个版本的OpenGL呢?可能是因为驱动程序没有实现glCreateProgramObjectARB这个函数。

1

答案是目前还不支持。简单来说,pygtkglext 这个库没有设置 glCreateProgram。不过在 Git 版本中是有的。

撰写回答