GLSL語法以及如何與程序鏈接

GLSL幾個要點(diǎn)

限定符

在之前的博客中也提到了,GLSL中的限定符號主要有:

attritude:一般用于各個頂點(diǎn)各不相同的量。如頂點(diǎn)顏色、坐標(biāo)等。? 輸入

uniform:一般用于對于3D物體中所有頂點(diǎn)都相同的量。比如光源位置,統(tǒng)一變換矩陣等。

varying:表示易變量,一般用于頂點(diǎn)著色器傳遞到片元著色器的量。輸出,vetexshader和fragshader數(shù)據(jù)的傳遞

const:常量。

privatestaticfinalStringVERTEX_SHADER="attribute vec4 position;\n"+

"attribute vec4 inputTextureCoordinate;\n"+

"attribute vec4 inputTextureCoordinate2;\n"+

"\n"+

"varying vec2 textureCoordinate;\n"+

"varying vec2 textureCoordinate2;\n"+

"\n"+

"void main()\n"+

"{\n"+

" gl_Position = position;\n"+

" textureCoordinate = inputTextureCoordinate.xy;\n"+

" textureCoordinate2 = inputTextureCoordinate2.xy;\n"+

"}";

publicstaticfinalStringALPHA_BLEND_FRAGMENT_SHADER="varying highp vec2 textureCoordinate;\n"+

" varying highp vec2 textureCoordinate2;\n"+

"\n"+

" uniform sampler2D inputImageTexture;\n"+

" uniform sampler2D inputImageTexture2;\n"+

"\n"+

" uniform lowp float mixturePercent;\n"+

"\n"+

" void main()\n"+

" {\n"+

" lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n"+

" lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2);\n"+

"\n"+

" gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a);\n"+

" }";

以上是一個典型的頂點(diǎn)著色器和片段著色器

inputTextureCoordinatetextureCoordinate2 頂點(diǎn)傳入?

position? 綁定頂點(diǎn)坐標(biāo)

inputImageTexture

inputImageTexture2? 創(chuàng)建并綁定紋理

inputTextureCoordinate?

inputTextureCoordinate2綁定紋理坐標(biāo)

textureCoordinate2作為片段著色器的輸出? 最終生成gl_FragColor


對于抖音特效,其實(shí)就改變gl_Position 和?gl_FragColor

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容