我只需要一个顶点着色器功能,但是没有片段着色器,我的对象就是黑色的。如果需要,我该如何编写片段着色器,以使对象不会失去其颜色?我最接近的是以下集合:
在顶点着色器中:
// 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);
}
这会将纹理应用于您的对象。我不确定您的原始设置是什么样的,但是如果您想进行照明,那么您将需要找出最初使用的照明类型,并在着色器中也将其实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句