0

我的計算着色器再次出現問題......我想將包含指針的結構傳遞給計算着色器。 這是我的結構,例如:計算着色器的輸入結構指針

struct couleurStruct { 
    float r; 
    float g; 
    float b; 
    float a; 
    float *x; 
}; 

這裏是我的SSBO初始化:

couleurStruct *coul; 
coul = (couleurStruct *)glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 1 * sizeof(couleurStruct), bufMask); 
//coul->x = (float *)glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 1 * sizeof(float), bufMask); 

coul->r = 0.0; 
coul->g = 1.0; 
coul->b = 0.0; 
coul->a = 1.0; 
coul->x[0] = 0.5; 

glUnmapBuffer(GL_SHADER_STORAGE_BUFFER); 

glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 4, structBuffer); 

我嘗試了很多不同的初始化,但沒有成功......

那麼,有沒有一種方法分配所有需要的內存(因爲我知道我需要在我的指針指向的每個數組內的內存)並將它傳遞給計算着色器?或者是否真的不可能將指針傳遞給計算着色器?

謝謝你的幫助!

回答

1

OpenGL中的着色器(和Vulkan/D3D對於此事)不能有有指針。你可以做的最多的是提供一些其他數據結構的索引。所以你可以使x成爲其他數組的索引。雖然目前尚不清楚爲什麼它需要成爲指針。

+0

再次感謝您!所以我將把指針改爲靜態數組......當然,上面的代碼只是一個測試代碼,而不是我真正在做的。 – bRiocHe