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

陌生人1399

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

在顶点着色器中:

// 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

GLSL从“片段着色器”到“顶点着色器”发送颜色数据似乎总是等于0

GLSL-顶点着色器和使用统一缓冲区对象的批处理

顶点着色器旋转ThreeJS对象

OpenGL顶点着色器变换,对象消失

在Threejs中使用顶点着色器旋转几何

Android上使用WebGL的顶点着色器工件

OpenGL-GLSL绘制3D GL_LINES顶点着色器与顶点

OpenGL顶点着色器处理

顶点着色器与片段着色器

在glsl 3.3中将浮点数组从顶点着色器传递到片段着色器

通过顶点attrib指针将颜色坐标传递到顶点着色器中

在顶点着色器中应用Y旋转时,纹理坐标移动

GLSL顶点着色器未接收到VBO数据

获取 GLSL 顶点着色器位置以用于 cpu 事件碰撞函数

glsl 顶点着色器统一变量未激活

如何通过顶点着色器将数据从顶点着色器传递到片段着色器

顶点着色器中的广告牌顶点

丢弃Unity的顶点着色器中的顶点

如何将数组存储到纹理中并在顶点着色器中正确采样纹理?

在顶点着色器中从相机到对象的XY距离

光线投射与已被顶点着色器置换的对象相交

是否可以将对象数组发送到顶点着色器?

在顶点着色器中进行转换时,在OpenGL中选择对象

顶点着色器不适用于克隆对象

Unity / CG:在顶点着色器中缩放对象

尝试在Win32 OpenGL中使用着色器,但顶点着色器什么也没画

在顶点着色器中创建纹理并将其传递给Fragment,以实现Metal的涂抹效果?

如何将纹理数据从Objective C客户端传递到此openGL顶点着色器?

使用顶点着色器的WebGL高度图,使用32位而不是8位