【GLSL】color shader

來源:互聯網
上載者:User

********************************************************************************

         這是來自lightthouse3d的教程,在此拙劣的翻譯一下,完全是為了自己加深印象,若你不經意看見,請指正錯誤之處。這裡並非逐句翻譯,譯者只是試圖用更加容易理解的語句來代替原句。

**************************************************************************

 

 

GLSL可以訪問部分opengl狀態,在這個教程我們將看到GLSL通過gl—colol在opengl應用程式中如何訪問顏色。

GLSL有屬性變數跟蹤當前的顏色,也可以通過可變變數從頂點shader中擷取。

attribute vec4 gl_Color;

varying vec4 gl_FrontColor; // writable on the vertex shader
varying vec4 gl_BackColor; // writable on the vertex shader

varying vec4 gl_Color; // readable on the fragment shader

 

其遵循:

1.opengl應用程式通過glcolor定義(頂點)顏色值

2.頂點shader通過gl_color擷取顏色值

3.頂點shader計算front face和banck face的顏色值,分別儲存於gl_FrontColor和 gl_BackColor 。

4.片元shader接受經過插值的顏色,插值可以通過gl_FrontColor和 gl_BackColor 來計算。

5.片元shader通過gl_color設定gl_FragColor 。

 

可變變數必須使用同樣的名字定義在頂點和片元shader裡面,在頂點shader有連個可變變數 gl_FrontColor 和 gl_BackColor,用於表示gl_color的值這取決於face。注意屬性變數gl_color和可變變數gl_color是不衝突的,因為前者只是在頂點裡可見,而後者在偏於shader裡。

好了,說的夠多了,頂點shader的代碼如下,這裡只計算了gl_FrontColor

 

 

                    void main()
                     {   
            gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
                    }

 片元shader代碼

 void main()
{
gl_FragColor = gl_Color;
}

工程代碼可以在此下載colorshader

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.