如何绘制没有纹理的对象和具有纹理OPENGL

时间:2019-11-13 20:58:09

标签: opengl graphics glsl

我有几个没有纹理坐标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);

1 个答案:

答案 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);