我的代码在这里,这将返回一个错误: 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;
}有人知道问题出在哪里吗?
发布于 2015-05-10 10:22:36
在我的OSX机器上,这个问题是由于模具缓冲深度设置,这是16位。OSX外观(或内置显卡)只能处理8位。由于我对OpenGL一点也不感兴趣,所以我还不能推理,但一旦我有了更深入的理解,我就会更新答案。
负责设置缓冲区深度的代码如下(更正版本):
glfwWindowHint(GLFW_STENCIL_BITS, 8);在使用glfwCreateWindow(...)创建窗口之前执行
希望这会有所帮助:)
https://stackoverflow.com/questions/27365099
复制相似问题