我希望在 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 有什么特别之处吗?还是我缺少一些初始化步骤?