[英]how to use pointers in GLSL
我需要向着色器發送一組數據。
//Application OpenGL
uniform vec3 *variable;
variable = (uniform vec3 *)malloc(80 * sizeof(uniform vec3));
//or
uniform vec3 variable[80];
我需要發送索引等數據以及許多其他數據。
后一種情況是正確的。 GLSL建立在盡可能簡單直接的執行之上。 您無法在着色器中分配內存,迭代非常昂貴。 精心編寫的GLSL或HLSL着色器接收固定的數據集,並輸出一組固定的數據。 這使得並行執行非常快。 這是我的骨架頂點着色器。
#version 110
uniform mat4 transform[ 32 ];
in int boneID;
void main()
{
gl_FrontColor = gl_Color;
gl_Position = transform[ boneID ] * gl_Vertex;
}
在C / ++方面,當調用glUniformMatrix4fv時,將其指向一個包含多個矩陣的數組並告訴它有多少,並將它們作為單獨的值引入GLSL。
請注意,我的代碼是基於舊版本的GLSL構建的,並且使用了許多現已棄用的元素,例如gl_Vertex。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.