如何使用gl_position将值写入顶点着色器中的指定坐标?

时间:2013-07-23 16:00:39

标签: opengl glsl shader

我只想将输入点写入顶点着色器中的指定坐标以进行某些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)坐标,可能是插值的原因,但是如何避免呢?

0 个答案:

没有答案