2 Stimmen

Nicht möglich, die Farbtiefe über 8 Bit hinaus für das GLFW OpenGL-Fenster (Ubuntu) zu erhöhen

In meiner OpenGL-Anwendung unter Ubuntu (12.10) habe ich beim Erstellen eines Fensters folgende GLFW-Fensterhinweise ausgegeben:

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);

// Erstelle OpenGL-Fenster
window = glfwCreateWindow(width, height, windowTitle.c_str(), NULL, NULL);

centerWindow();
glfwMakeContextCurrent(window);

Dies führt jedoch dazu, dass ein OpenGL-Kontext mit einem assoziierten Fenster mit einer Pixel-Farbtiefe von R-G-B-A = 8-8-8-8 erstellt wird. Um dies zu überprüfen, habe ich den folgenden Code verwendet, nachdem ich mein GLFW-Fenster erstellt habe:

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

cout << "Aktueller Videomodus: " <<
        mode->redBits << "-" <<
        mode->greenBits << "-" <<
        mode->blueBits << endl;

cout << "Alle möglichen Videomodi: " << endl;
mode = glfwGetVideoModes(monitor, &count);
for(int i = 0; i < count; i++) {
    cout << mode->redBits << "-" <<
            mode->greenBits << "-" <<
            mode->blueBits << endl;
}

Zu meiner Überraschung erhalte ich für meinen aktuellen Videomodus und für alle möglichen Videomodi jeweils 8-8-8-8. Ich bin sicher, dass dies nicht der Fall sein kann, da mein Monitor (Samsung S23B550) monochrome Farbverläufe ohne Banding-Probleme anzeigen kann, was bedeutet, dass er mindestens eine Farbtiefe von 16-24 Bit pro Farbkanal haben sollte. Ich verwende auch eine moderne Grafikkarte (Nvidia GT650M), die einen Framebuffer unterstützen sollte, der zwischen 24-32 Bit pro Kanal bietet.

Das einzige seltsame, was zu berücksichtigen ist, ist, dass meine Grafikkarte die Nvidia-Optimus-Technologie verwendet, was bedeutet, dass ich optirun (Bumblee) für die Grafikkartenumschaltung (integriert zu dediziert) verwenden muss, wenn ich meine OpenGL-Anwendungen ausführe.

0voto

genpfault Punkte 49237

Nvidia sagt, dass man eine Quadro kaufen muss, um 10-Bit-Farbe in OpenGL zu verwenden.

Nicht dass AMD in dieser Hinsicht besser wäre.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X