2014-02-07 34 views
0

以下函数不适用于我(pyopengl和opengl 4.2)。pyopengl:glFramebuffer函数错误

我做错了什么?

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,调用

glFramebufferParameteri(GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER_DEFAULT_WIDTH, 512); 

OpenGL.error.NullFunctionError之前检查布尔(glGetFramebufferParameteriv)离子glFramebufferParameteri,呼吁

示例代码之前检查布尔(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() 

回答

1

您列出的错误每个人都是对症的是不支持扩展GL_ARB_framebuffer_no_attachments实现的。您尝试使用的功能在OpenGL 4.3中是核心,要在4.2中使用它们,您必须支持上述扩展。

这就是说,考虑到这并不是一个特殊的硬件功能,你可以通过升级你的驱动程序来解决这个问题。无论如何,如果你的硬件来自NV或AMD。