0

我只想将输入点写入顶点着色器中的指定坐标以进行某些 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)

    #版本 330
    vec3 inPosition 中的布局(位置 = 0);
    将 vec4 tofrag 弄平;
    无效的主要()
    {
        vec2 线 = vec2(-1+ (gl_VertexID)*2.0/6, 0);
        gl_Position = vec4(cord, 0, 1.0);
        tofrag = vec4(inPosition.xyz, -1);

    }

片段着色器,我只是输出 tofrag。

    #版本 330
    out vec4 outputColor;
    在 vec4 tofrag 中平坦;

    无效的主要()
    {
        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)坐标,可能是插值的原因,但如何避免呢?

4

0 回答 0