从纹理中获取精确像素

时间:2016-12-29 15:54:03

标签: opengl matrix fragment-shader

我对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]条目)。有人可以解释一下,怎么做?

1 个答案:

答案 0 :(得分:0)

如果您尝试将单个常量值(即[1,1]中的值)添加到整个图像(渲染图像的每个像素),那么您应该将该常量值作为单独的{{1}传递将值添加到着色器程序中。

然后在片段着色器中,将此常量值添加到当前像素颜色。当前像素颜色来自顶点着色器的输入PressButton: