我只想将输入点写入顶点着色器中的指定坐标以进行某些gpgpu操作。
详情: 我有5个点,顶点着色器中有一些算法。 然后我想将points_result [0]写入纹理(渲染到纹理),坐标为(1,0),这样我就可以使用结果纹理中的glReadPixels,(或类似于(0.5,0.5)的第一个point_result) ,(1.5,0.5)为第二个point_result。等。)
即,如何将gl_position映射到渲染纹理结果的坐标?
- 似乎出了点问题。 我在这里画4点: (1,3,1) (3,1,2) (2,8,3) (4,3,5)
#version 330 layout (location = 0) in vec3 inPosition; flat out vec4 tofrag; void main() { vec2 cord = vec2(-1+ (gl_VertexID)*2.0/6, 0); gl_Position = vec4(cord, 0, 1.0); tofrag = vec4(inPosition.xyz, -1); }
片段着色器,我只输出tofrag。
#version 330 out vec4 outputColor; flat in vec4 tofrag; void main() { outputColor = tofrag; }
当我读取窗口大小(6 * 1)像素时,显示结果。
0: (1.00,1.00,1.00,-1.00) 1: (3.00,2.00,2.00,-1.00) 2: (2.00,3.00,3.00,-1.00) 3: (4.00,5.00,5.00,-1.00) 4: (0.00,0.00,0.00,1.00) 5: (0.00,0.00,0.00,1.00)
看来,这个着色器只能得到(x,z,z)坐标,可能是插值的原因,但是如何避免呢?