簡體   English   中英

如何將片段着色器僅應用於OpenGL中的一個對象?

[英]How to apply a fragment shader to only one object in OpenGL?

我剛開始學習OpenGL。 在我看過的所有教程中,他們演示了如何使用片段着色器設置視圖中所有對象的顏色。 我還沒有找到的是如何在一個對象上使用片段着色器,為不同的對象提供不同的顏色。 你是怎樣做的?

為了提供問題的背景,我在2d畫了一個房子和道路的簡單場景。 我已經發現如何使用固定的圖形管道設置我的每個對象(房子的主體,窗口等)的顏色,我只是不明白如何使用片段着色器設置顏色。

如果我誤解了某些內容,我們將非常感謝任何澄清,包括糾正。

在使用glDrawArraysglDrawElements繪制對象之前,將顏色作為變量傳遞給着色器。

http://www.opengl.org/sdk/docs/man/xhtml/glUniform.xml

樣本GLSL片段着色器:

uniform vec4 u_color;

void main(void)
{
     gl_FragColor = u_color;
 }

我會擴展這個答案,但我很懶。 希望它有所幫助。 網上有很多教程,只搜索glsl,glUniform4f等。

為了提供問題的背景,我在2d畫了一個房子和道路的簡單場景。 我已經發現如何使用固定的圖形管道設置我的每個對象(房子的主體,窗口等)的顏色,我只是不明白如何使用片段着色器設置顏色。

正如RobertRouhani所說 ,使顏色變得均勻並為每個物體改變顏色。


如何將片段着色器僅應用於OpenGL中的一個對象?

您只需使用glUseProgram更改着色器程序, glUseProgram使用不同的着色器渲染調用。

請參閱: https//gamedev.stackexchange.com/questions/22216/using-multiple-shaders

暫無
暫無

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

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