【问题标题】:Pass through vertex shader for texture mapping?通过顶点着色器进行纹理映射?
【发布时间】:2012-07-18 20:36:15
【问题描述】:

我给this example添加了一个顶点着色器:

void main()
{   
    gl_Position = ftransform();
}   

然后我得到这张图片:

我在这里做错了什么?

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

    对于使用顶点着色器的纹理映射,您还需要将纹理坐标以及顶点位置传递给片段着色器。示例,包括以下示例,可以在 here

    找到
    void main()
    {
        // Transforming The Vertex
        gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
    
        // Passing The Texture Coordinate Of Texture Unit 0 To The Fragment Shader
        texture_coordinate = vec2(gl_MultiTexCoord0);
    }
    

    【讨论】:

    • 废话!使用 swizzle 表示法。我喜欢gl_MultiTexCoord0.xy,因为我不相信.st;它没有向我传达意义。 uv 是合适的,但 GLSL 不支持它。
    猜你喜欢
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多