2

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

ただし、これにより、RGBA = 8-8-8-8 のピクセル カラー ビット深度を持つ関連付けられたウィンドウで OpenGL コンテキストが作成されます。これを確認するために、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 が得られます。私のモニター(Samsung S23B550)はマッハバンディングの問題なしに単色のグラデーションを表示できるため、これは当てはまりません。つまり、カラーチャネルごとに少なくとも16〜24ビットの深さである必要があります。また、最新のグラフィックス カード (Nvidia GT650M) を使用しています。これには、チャネルあたり 24 ~ 32 ビットをサポートするフレーム バッファーが必要です。

考慮すべき唯一の奇妙な点は、私のグラフィック カードが Nvidia Optimus テクノロジを使用していることです。つまり、Linux で専用のグラフィック カードを使用したい場合は、グラフィック カードの切り替え (統合型) に optirun (Bumblee) を使用する必要があります。 -dedicated)、OpenGL アプリケーションを実行するときに行います。

4

1 に答える 1

0

Nvidia によると、OpenGL で 10 ビット カラーを使用するには、Quadroを用意する必要があります。

その点で AMD が優れているわけではありません。

于 2013-10-25T19:24:07.537 に答える