[英]How to apply a fragment shader to only one object in OpenGL?
我剛開始學習OpenGL。 在我看過的所有教程中,他們演示了如何使用片段着色器設置視圖中所有對象的顏色。 我還沒有找到的是如何在一個對象上使用片段着色器,為不同的對象提供不同的顏色。 你是怎樣做的?
為了提供問題的背景,我在2d畫了一個房子和道路的簡單場景。 我已經發現如何使用固定的圖形管道設置我的每個對象(房子的主體,窗口等)的顏色,我只是不明白如何使用片段着色器設置顏色。
如果我誤解了某些內容,我們將非常感謝任何澄清,包括糾正。
在使用glDrawArrays
或glDrawElements
繪制對象之前,將顏色作為變量傳遞給着色器。
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.