2016-04-18 35 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 
}