我只想将输入点写入顶点着色器中的指定坐标以进行某些gpgpu操作 .
细节:我有5个点,顶点着色器中有一些算法 . 然后我想将points_result [0]写入纹理(渲染到纹理),坐标是(1,0),这样我就可以使用结果纹理中的glReadPixels,(或类似于(0.5,0.5)的第一个point_result ,(1.5,0.5)为第二个point_result . 等) .
Namely, How to mapping gl_position to the coordinate of the rendered texture result?
- 似乎出了点问题 . 我在这里画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)坐标,也许它是插值的原因,但是如何避免呢?