带有VAO的Cocoa OpenGLView

时间:2012-07-10 22:10:57

标签: cocoa opengl

我希望在Cocoa上创建一个自定义的NSOpenGL视图。但是,我在使用VAO时遇到了麻烦。特别是,运行时,这个虚拟测试视图:

/// OpenGLTestView.h:
@interface OpenGLTestView : NSOpenGLView

- (void)prepareOpenGL;

@end

/// OpenGLTestView.m:
#import <OpenGL/gl3.h>

@implementation OpenGLTestView

- (void)prepareOpenGL {
    GLenum error;
    GLuint vertex_array;
    glGenVertexArrays(1, &vertex_array);
    error = glGetError();
    switch (error) {
        case GL_NO_ERROR:
            printf("GL_NO_ERROR\n");
            break;
        case GL_INVALID_ENUM:
            printf("GL_INVALID_ENUM\n");
            break;
        case GL_INVALID_VALUE:
            printf("GL_INVALID_VALUE\n");
            break;
        case GL_INVALID_OPERATION:
            printf("GL_INVALID_OPERATION\n");
            break;
        case GL_INVALID_FRAMEBUFFER_OPERATION:
            printf("GL_INVALID_FRAMEBUFFER_OPERATION\n");
            break;
        case GL_OUT_OF_MEMORY:
            printf("GL_OUT_OF_MEMORY\n");
            break;
        default:
            printf("Unknown error\n");
            break;
    }
}

@end

在输出上打印:

GL_INVALID_OPERATION

Apple对可可的VAO做了哪些特别的事情?或者是否有一些我缺少的初始化步骤?

1 个答案:

答案 0 :(得分:2)

问题在于我没有创建OpenGL 3.2上下文(但在其上调用3.2函数)。使用设置为NSOpenGLProfileVersion3_2Core的NSOpenGLPFAOpenGLProfile属性创建新上下文,然后使用新上下文在NSOpenGLView上调用 - (void)setOpenGLContext:(NSOpenGLContext *)上下文解决问题。