2016-04-18 36 views
-2

当试图在自定义NSOpenGLView中设置OpenGL上下文时,任何对glGenVertexArrays的调用似乎都不会写入输出,并且会提升GL_INVALID_OPERATIONdocsglGenVertexArrays只能表示GL_INVALID_VALUE,而不是GL_INVALID_OPERATION,因为它是这种情况。此外,在相同的代码中,glGenBuffers按预期工作。如何处理glGenVertexArrays上的GL_INVALID_OPERATION?

// within NSOpenGLView.prepareOpenGL: 
glGenBuffers(1, &vbo); 
// glGetError() == 0 

glGenVertexArrays(1, &vao); 
// glGetError() == GL_INVALID_OPERATION 

那么,我该如何正确生成顶点阵列?

回答

1

它看起来像我想要使用传统配置文件的框架。

什么了解决我的问题是指定在视图中构造的像素格式:

required init?(coder: NSCoder) { 
    let attributes = [ 
     UInt32(NSOpenGLPFADoubleBuffer), 
     UInt32(NSOpenGLPFAOpenGLProfile), UInt32(NSOpenGLProfileVersion3_2Core), 
     0 
    ] 
    let pixelFormat = NSOpenGLPixelFormat(attributes: attributes) 

    super.init(coder: coder) 

    self.pixelFormat = pixelFormat 
}