我希望在Cocoa上做一个自定义的NSOpenGL视图。然而,我在使用VAOs时遇到了问题。特别是,在运行时,这个虚拟的测试视图:
/// 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苹果对可可的VAOs做了什么特别的事情吗?或者是我遗漏了什么初始化步骤?
发布于 2014-01-05 00:36:04
问题是我不是在创建OpenGL 3.2上下文(而是在它上面调用3.2函数)。使用设置为NSOpenGLProfileVersion3_2Core的NSOpenGLPFAOpenGLProfile属性创建一个新上下文,然后在具有新上下文的NSOpenGLView上调用- (void)setOpenGLContext:(NSOpenGLContext *)context解决了这个问题。
https://stackoverflow.com/questions/11422798
复制相似问题