簡體   English   中英

在OpenGL中繪制完全白色的紋理

[英]Draw Completely White Texture in OpenGL

我想做的是在OpenGL中繪制一個像普通的紋理,但是要完全白色。 我嘗試做glColor3f(2.f, 2.f, 2.f)但這不起作用。 我只想繪制某種紋理的形狀,但沒有顏色,只有白色,所以我想繪制一種紋理,但白色...

為了闡明期望的結果:我希望從紋理采樣的所有顏色的RGB部分為白色,而alpha值是從紋理采樣的一個。 因此,如果紋理中的值為(R,G,B,A),我希望采樣的顏色為(1.0f,1.0f,1.0f,A)。

使用像素着色器,並將每個片段的顏色設置為白色。

要將紋理的顏色變為白色,但仍使用從紋理采樣的Alpha值,可以使用:

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

GL_ADD紋理環境模式下,傳入的片​​段顏色(上面的第二個調用將其設置為白色)將添加到從紋理采樣的顏色中,以獲得輸出顏色。 由於輸出顏色被限制在[0.0,1.0]范圍內,因此紋理中的顏色分量無關緊要,因為在將結果限制為1.0之前會將它們添加到1.0。 因此,輸出的RGB顏色部分將始終為白色。

不太明顯的部分是alpha值發生了什么。 根據規范,對於GL_ADD紋理環境模式,將來自傳入片段的alpha值和從紋理采樣的alpha值相乘 將片段alpha設置為1.0時,這意味着結果值是紋理中的alpha值,這就是您想要的。

在代碼中創建一個1x1白色RGBA位圖。

GLubyte texData[] = { 255, 255, 255, 255 };

將數據復制到紋理。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, texData);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM