1
我目前正在玩glsl。爲此,我需要將一個數組從opengl代碼傳遞給gsls,然後返回從數組中計算出一種新的顏色。但不知何故,這對我不起作用。而不是獲得整個數組,我總是堅持只有第一個條目。 你能幫我說我做錯了什麼嗎?glsl pyOpenGL數組傳遞
import numpy as np
\\...
array = np.array([1.2,2.5,3.8,4.3,5.6, #....])
location = glGetUniformLocation(program,"arrayInShader")
glUniform1fv(location,1,array)
,並在着色器:
uniform float arrayInShader[5];
varying vec3 color;
void main()
{
color.r=arrayInShader[0]+arrayInShader[1];
color.g=arrayInShader[2];
color.b=arrayInShader[3]+arrayInShader[4];
}
非常感謝你們!
據我瞭解count,它指定了多少個數組/矢量同時傳遞給着色器,不是嗎? – Donny
我試過了,實際上它的工作原理。 那麼我對那個愚蠢的問題感到抱歉,但我確信我讀到這是許多人所犯的一個重大錯誤。所以我從字面上從來沒有試圖改變這一點! – Donny
@Donny你對伯爵有一定的把握。它說明你上傳了多少基本元素。在這種情況下,這些元素是單浮體,你想要5個。如果你會使用glUniform4fv和vec4制服,那麼你會上傳20個浮點數,計數參數爲5。 –