我在Linux中看到來自OpenGL的顏色略微變暗/ alpha輸出。我沒有看到1.0的紅色分量值,而是看到〜.96988。例如,我有一個完全紅色的矩形(紅色分量= 1.0,alpha = 1.0,綠色和藍色爲零)。無論是否啓用我的頂點/片段着色器,都會發生調光。OpenGL顏色/ alpha輸出稍微變暗
禁用照明,因此在顏色計算中不應包含環境光或其他光源。
glBegin(GL_POLYGON);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertex2f(0.0, 0.0);
glVertex2f(1.0, 0.0);
glVertex2f(1.0, 1.0);
glVertex2f(0.0, 1.0);
glEnd();
我拍攝了所得窗口的屏幕截圖,然後將圖像加載到繪圖程序中並檢查任何特定像素。我看到一個紅色的分量整數值爲247,而不是255,如我所料。當我在啓用頂點着色器的情況下運行時,我看到gl_Color.r組件已經是< 1.0,並且gl_Color.a組件也是。
所有的OpenGL狀態都是默認值。我錯過了什麼?
由於問題編輯: 我通過在頂點着色器中檢查它的粗略迭代過程確定紅色分量的值爲〜.96988,並在紅色分量高於閾值。我一直在減少恆定的價值,直到我不再看到紫色。這奏效了:
if(gl_Color.r > 0.96988)
{
gl_Color.b = 1.0; \\ show purple instead of the slightly dimmed red.
}
編輯:
//VERTEX SHADER
varying vec2 texture_coordinate;
void main()
{
gl_Position = ftransform();
texture_coordinate = vec2(gl_MultiTexCoord0);
gl_FrontColor = gl_Color;
}
//FRAGMENT SHADER
varying vec2 texture_coordinate;
uniform sampler2D Texture0;
void main(void)
{
gl_FragColor = texture2D(Texture0, texture_coordinate) * gl_Color;
}
Texture0在這種情況下是完全飽和的紅色長方形紅色= 1.0,阿爾法= 1.0。如果沒有紋理,使用頂點顏色,我會得到相同的結果;稍微暗淡的紅色和Alpha組件。
還有一件事,Red和Aplha頻道被「調光」了相同的數量。所以有些東西會導致整個顏色分量變暗。正如我在主要問題中所說的,無論是使用着色器還是固定功能管道,都會發生這種情況。
只是爲了好玩,我在Windows中使用DirectX進行了類似的測試,結果產生了紅色組件254的矩形;仍然略微變暗,但幾乎沒有。
請問我可以知道你看到的值~96988。 我想這是非常正常的浮點值。 – 2012-01-11 21:45:53
你有合成器嗎?如果是這樣,請確保它不是通過插件或其他東西與您的窗口輸出玩遊戲。 – genpfault 2012-01-11 21:52:05
司機是否有伽瑪設置? – 2012-01-11 23:11:40