我的代码在这里,这会返回一个错误:NSGL:无法创建OpenGL像素格式
错误回调是glfw的标准回调。
int main(int argc, const char * argv[]) {
glfwSetErrorCallback(error_callback);
if (!glfwInit ()) {
fprintf (stderr, "ERROR: could not start GLFW3\n");
return 1;
}
GLFWwindow* window = glfwCreateWindow (640, 480, "Hello Triangle", NULL, NULL);
glfwMakeContextCurrent (window);
if (!window) {
fprintf (stderr, "\nERROR: could not open window with GLFW3\n");
return -1;
}
// start GLEW extension handler
glewExperimental = GL_TRUE;
glewInit ();
// get version info
const GLubyte* renderer = glGetString (GL_RENDERER); // get renderer string
const GLubyte* version = glGetString (GL_VERSION); // version as a string
printf ("Renderer: %s\n", renderer);
printf ("OpenGL version supported %s\n", version);
// tell GL to only draw onto a pixel if the shape is closer to the viewer
glEnable (GL_DEPTH_TEST); // enable depth-testing
glDepthFunc (GL_LESS); // depth-testing interprets a smaller value as "closer"
/* OTHER STUFF GOES HERE NEXT */
// close GL context and any other GLFW resources
glfwTerminate();
return 0;
}
有人知道问题是什么吗?
答案 0 :(得分:1)
在我的OSX机器上,由于模板缓冲深度设置(16位)而出现了这个问题。显然OSX(或内置显卡)只能处理8位。因为我根本没有进入OpenGL,所以我还不能解释,但是一旦我有了更深入的了解,我就会更新答案。
负责设置缓冲区深度的代码如下(更正版本):
glfwWindowHint(GLFW_STENCIL_BITS, 8);
在使用glfwCreateWindow(...)
希望这会有所帮助:)