我希望在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做了哪些特别的事情?或者是否有一些我缺少的初始化步骤?
答案 0 :(得分:2)
问题在于我没有创建OpenGL 3.2上下文(但在其上调用3.2函数)。使用设置为NSOpenGLProfileVersion3_2Core的NSOpenGLPFAOpenGLProfile属性创建新上下文,然后使用新上下文在NSOpenGLView上调用 - (void)setOpenGLContext:(NSOpenGLContext *)上下文解决问题。