繁体   English   中英

仅使用顶点着色器对象的glsl会丢失颜色/纹理

[英]glsl using only vertex shader object loses color/texture

我只需要一个顶点着色器功能,但是没有片段着色器,我的对象就是黑色的。 如果需要,我该如何编写片段着色器,以使对象不会失去其颜色? 我最接近的是以下集合:

在顶点着色器中:

// some functionality regarding changing objects position
gl_FrontColor = gl_Color;
gl_FrontSecondaryColor = gl_SecondaryColor;
gl_BackColor = gl_Color;
gl_BackSecondaryColor = gl_SecondaryColor;

而且根本不加载片段着色器。 这样,对象是有色的但没有纹理。 如何保持对象的着色/纹理原样?

您可以编写的最简单的片段着色器就是使用在顶点着色器中分配的颜色:

void main()
{
    gl_FragColor = gl_Color;
}

为了获得纹理,您需要通过添加以下行来更改顶点着色器以沿纹理坐标传递:

gl_TexCoord[0] = gl_MultiTexCoord0;

您的片段着色器将是:

uniform sampler2D tex_sampler;
void main()
{
    gl_FragColor = texture2D(tex_sampler,gl_TexCoord[0].st);
}

这会将纹理应用于您的对象。 我不确定您的原始设置是什么样的,但是如果您要进行照明,则需要找出最初使用的照明类型,并在着色器中也要实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM