我有几个没有纹理坐标UV传递到片段着色器的对象,而我只有另外两个带有纹理坐标UV传递到片段着色器的对象。没有纹理的对象仍然可见,但颜色暗淡。但是在插入光方程后,它变为黑色且不可见。我如何绘制未纹理化的对象而不更改其原始颜色并保持光照方程式(我已经为它们创建了颜色阵列并将其传递到顶点着色器中)。我已经尝试过了,但是我的片段着色器无法编译。
#version 330
in vec3 fragmentColor;
in vec3 fragmentNormal;
in vec2 UV;
in vec4 Position;
uniform vec4 lighteye;
uniform float intensityh;
uniform float intensityd;
uniform float objectd;
uniform vec4 worldCoord;
//纹理数据 均匀采样器2D texture_Colors;
if(UV.x >= 0.0)
color = intensityh * texture2D( texture_Colors, UV ).rgb * diffuse + (intensityd * texture2D( texture_Colors, UV ).rgb * something) ;
else
color = vec4(fragmentColor,1.0);
答案 0 :(得分:0)
据我了解,您可以执行以下操作:
color r = intensityh * texture2D( texture_Colours, worldCoord.xy).rgb * diffuse+( intensityd* texture2D (texture_Colours, worldCoord.xy).rgb * something
这应根据对象在3D空间中的位置来纹理化。 但是请不要忘记通过CPU代码为每个纹理启用纹理重复,如下所示:
glTexParameterf(GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_WRAP_T, GL_REPEAT);