以下功能对我不起作用(pyopengl和opengl 4.2)。
我做错了吗?
glGetIntegerv(GL_MAX_FRAMEBUFFER_WIDTH)
KeyError:('未知说明符GL_MAX_FRAMEBUFFER_WIDTH(0x9315)','cConverter失败',(GL_MAX_FRAMEBUFFER_WIDTH,),1,)
glGetFramebufferParameteriv(GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH)
OpenGL.error.NullFunctionError:尝试调用未定义的函数glGetFramebufferParameteriv,在调用之前检查bool(glGetFramebufferParameteriv)
glFramebufferParameteri(GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH, 512);
OpenGL.error.NullFunctionError:尝试调用未定义的函数glFramebufferParameteri,在调用之前检查bool(glFramebufferParameteri)
示例代码:
from __future__ import division
import OpenGL
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def InitGL():
glClearColor(0.0, 0.0, 0.0, 0.0)
glClearDepth(1.0)
glShadeModel(GL_SMOOTH)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45.0, 800 / 600, 0.1, 100.0)
glMatrixMode(GL_MODELVIEW)
def DrawGLScene():
fbo = glGenFramebuffers(1)
glBindFramebuffer(GL_FRAMEBUFFER, fbo)
#folowing not working
print glGetIntegerv(GL_MAX_FRAMEBUFFER_WIDTH);
print glGetFramebufferParameteriv(GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH)
glFramebufferParameteri(GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH, 512);
glFramebufferParameteri(GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_HEIGHT, 512);
glutInit(sys.argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH)
glutInitWindowSize(800, 600)
window = glutCreateWindow("")
glutDisplayFunc(DrawGLScene)
InitGL()
DrawGLScene()
答案 0 :(得分:1)
您列出的每个错误都是不支持GL_ARB_framebuffer_no_attachments
扩展的实施的症状。您尝试使用的功能在OpenGL 4.3中是核心,要在4.2中使用它们,您必须支持上述扩展。
那就是说,考虑到这不是一个特殊的硬件功能,你可以通过升级你的驱动程序来解决这个问题。如果你的硬件来自NV或AMD,无论如何。