无法为GLFW OpenGL窗口(Ubuntu)增加超过8位的颜色位深度

时间:2013-10-25 18:22:17

标签: opengl colors bit framebuffer glfw

在我的Ubuntu(12.10)上的OpenGL应用程序中,我在创建窗口时发出了以下GLFW窗口提示:

glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_VISIBLE, GL_TRUE);
glfwWindowHint(GLFW_SAMPLES, 0);
glfwWindowHint(GLFW_RED_BITS, 24);
glfwWindowHint(GLFW_GREEN_BITS, 24);
glfwWindowHint(GLFW_BLUE_BITS, 24);
glfwWindowHint(GLFW_ALPHA_BITS, 8);

// Create Opengl Window
window = glfwCreateWindow(width, height, windowTitle.c_str(), NULL, NULL);

centerWindow();
glfwMakeContextCurrent(window);

但这导致使用相关窗口创建OpenGL上下文,其中像素颜色位深度为R-G-B-A = 8-8-8-8。为了检查这一点,我在创建GLFW窗口后使用了以下代码:

int count;
const GLFWvidmode * mode = glfwGetVideoMode(monitor);

cout << "Current video mode: " <<
        mode->redBits << "-" <<
        mode->greenBits << "-" <<
        mode->blueBits << endl;

cout << "All possible video modes: " << endl;
mode = glfwGetVideoModes(monitor, &count);
for(int i = 0; i < count; i++) {
    cout << mode->redBits << "-" <<
            mode->greenBits << "-" <<
            mode->blueBits << endl;
}

令人惊讶的是,我目前的视频模式和所有可能的视频模式都获得了8-8-8-8。我确定不会出现这种情况,因为我的显示器(三星S23B550)可以显示单色渐变而没有任何机械带问题,这意味着每个颜色通道应该至少有16-24位深度。我还使用了现代显卡(Nvidia GT650M),它应该有一个支持每通道24-32位的帧缓冲。

唯一奇怪的是我的显卡使用的是Nvidia Optimus技术,这意味着如果我想在Linux上使用我的专用显卡,我必须使用optirun(Bumblee)进行显卡切换(集成到专用),我在运行OpenGL应用程序时会这样做。

1 个答案:

答案 0 :(得分:0)

Nvidia说你必须shell out for a Quadro在OpenGL中使用10位颜色。

不是AMD is any better in that regard