我需要發送一組數據給像着色器。如何在GLSL中使用指針
//Application OpenGL
uniform vec3 *variable;
variable = (uniform vec3 *)malloc(80 * sizeof(uniform vec3));
//or
uniform vec3 variable[80];
我需要發送數據,如索引和許多其他數據。
我需要發送一組數據給像着色器。如何在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。
感謝您糾正格式,@Hasturkun,仍然越來越與此握手! – jameswilddev
樂意幫忙。 btw,您可以在編輯器中選擇文本,然後按CTRL + K(或編輯器工具欄中的大括號按鈕)以便於格式化。 – Hasturkun
很高興知道,謝謝! – jameswilddev
首先,您使用的是什麼GL/GLSL版本?也許你正在尋找Uniform Buffer Objects?你能用這個紋理嗎?也許還包括一個更具體的例子,說明你想在這裏實現什麼? – Grimmy
我的gl/glsl版本是2.0。我嘗試發送皮膚動畫索引。謝謝 –
更新實際問題幷包含您當前使用的GLSL #version指令。 – Grimmy