簡體   English   中英

如何在GLSL中使用指針

[英]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.

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