在頂點着色器中,當然允許有限數量的統一存儲,並且我的理解是不同的系統可能以稍微不同的方式在編譯代碼方面實現GLSL。我聽說過使用常量而不是在頂點着色器代碼中寫出文字的建議。在頂點着色器中聲明常量而不是文字。標準做法,還是不必要的嚴格?
例如,下面的代碼據推測導致可用統一存儲的減少。 (我不太瞭解。)
例1:用文字
vec4 myVector = vec4(1.0, 0.0, 0.0, 1.0);
據我瞭解,有可能的1.0
或0.0
每次使用佔據了統一的一定量的可能性儲存空間。因此,該建議是把以前的代碼轉換成類似以下內容:
例2:使用常數代替文字
const float zero = 0.0;
const float one = 1.0;
vec4 myVector = vec4(one, zero, zero, one);
有誰知道背後發生了什麼事情的說法?我沒有任何代碼問題,我只是想正確理解這些東西,以便將來沒有問題。
我的正式的問題如下:專門爲使用的OpenGL ES 2.0的的iOS平臺,是寫出來與文本(實施例1),或與常量(實施例2的東西最好的做法)。我是否應該花時間每次都用常量寫出東西,或者如果頂點着色器無法正確編譯,我應該寫出文字並只使用常量?
謝謝!
你可以看看二進制文件,看看有什麼區別嗎? –