2016-12-29 111 views
-2

我有一個關於OpenGL紋理的問題。我正在嘗試將它們用於GPGPU操作,但我陷入了開始階段。我創建了這樣的紋理(4x4 int矩陣)。從紋理獲取確切的像素

OGLTexImageFloat dataTexImage = new OGLTexImageFloat(4, 4, 4); 
dataTexImage.setPixel(0, 0, 0, 0); 
dataTexImage.setPixel(0, 1, 0, 10); 
dataTexImage.setPixel(0, 2, 0, 5); 
dataTexImage.setPixel(0, 3, 0, 15); 
dataTexImage.setPixel(1, 0, 0, 10); 
dataTexImage.setPixel(1, 1, 0, 0); 
dataTexImage.setPixel(1, 2, 0, 2); 
dataTexImage.setPixel(1, 3, 0, 1000); 
dataTexImage.setPixel(2, 0, 0, 5); 
dataTexImage.setPixel(2, 1, 0, 2); 
dataTexImage.setPixel(2, 2, 0, 0); 
dataTexImage.setPixel(2, 3, 0, 2); 
dataTexImage.setPixel(3, 0, 0, 15); 
dataTexImage.setPixel(3, 1, 0, 1000); 
dataTexImage.setPixel(3, 2, 0, 2); 
dataTexImage.setPixel(3, 3, 0, 0); 
texture = new OGLTexture2D(gl, dataTexImage); 

現在我想從[1,1]矩陣位置增加值到每個像素(矩陣條目)的值。正如我在談論每幅圖片時,我應該在片段着色器中做這件事。但我不知道我怎麼能得到確切的像素形式紋理(矩陣[1,1]條目)。有人可以解釋我,如何做到這一點?

+0

「*由於我正在談論每張圖片,所以我應該在片段着色器中做。*」您正在添加*** 16值。上傳和下載數據到GPU所花費的時間將比實際添加花費的時間更長。只需使用CPU。 –

+0

我想將它用於更大的數據集,但是從一開始我就有一個小矩陣,所以我更容易想象這個問題。 – Pogasta

回答

0

如果您試圖向整個圖像(渲染圖像的每個像素)添加單個常量值(即[1,1]的值),則應該將該常量值作爲單獨的uniform值進入你的着色器程序。

然後在片段着色器中,將此常量值添加到當前像素顏色。當前像素顏色作爲來自頂點着色器的輸入vec4