NSGL:无法创建OpenGL像素格式

时间:2014-12-08 19:08:11

标签: opengl

我的代码在这里,这会返回一个错误: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;
}

有人知道问题是什么吗?

1 个答案:

答案 0 :(得分:1)

在我的OSX机器上,由于模板缓冲深度设置(16位)而出现了这个问题。显然OSX(或内置显卡)只能处理8位。因为我根本没有进入OpenGL,所以我还不能解释,但是一旦我有了更深入的了解,我就会更新答案。

负责设置缓冲区深度的代码如下(更正版本):

glfwWindowHint(GLFW_STENCIL_BITS, 8);

在使用glfwCreateWindow(...)

创建窗口之前执行

希望这会有所帮助:)