簡體   English   中英

WebGL制服的返回值

[英]WebGl Uniforms return value

我試圖在WebGl中創建一個簡單的3D應用程序,其中繪制的每個對象都附加了自己的着色器。 但是我在Firefox中有一個奇怪的問題(在Chrome中這很完美),其中每個着色器中每個矩陣/采樣器的統一位置都沒有正確保存。 意思是每次我更改當前着色器時,我必須為每個我的着色器使用的矩陣調用getUniformLocation,這對我來說似乎有點浪費。

tmp.pMatrixUniform = this.gl.getUniformLocation(tmp, "uPMatrix"); //perpesctive
tmp.mvMatrixUniform = this.gl.getUniformLocation(tmp, "uMVMatrix");  //world transform
tmp.samplerUniform = this.gl.getUniformLocation(tmp, "uSampler"); //texture sampler

return tmp;

上面的代碼是我創建着色器並將其存儲以供多個對象使用的地方。 我知道tmp着色器對象的引用是正確存儲和修改的,因為在這些代碼行的上方,我以類似的方式保存每個屬性位置,對於“當前着色器”的每次更改都不需要重置。

就像我說的那樣,這僅在Firefox中不起作用,這使我相信Firefox和Chrome瀏覽器存儲統一位置的方式有所不同。 有沒有人知道另一種存儲這些值的方法,以便它可以在兩個瀏覽器中工作,而不必為每一幀“重新獲取”它們?

我解決了這個問題。 事實證明,這不是函數本身的問題,而是當切換到新的着色器時,我總是鏈接它而不是僅在創建時鏈接着色器。

暫無
暫無

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

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