I'm hoping to make a custom NSOpenGL view on Cocoa. However, I'm having trouble using VAOs. In particular, when run, this dummy test view:
/// 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
prints this on output:
GL_INVALID_OPERATION
Does Apple do something special with VAOs on cocoa? Or is there some initialization step that I'm missing?