【发布时间】:2016-04-29 01:09:18
【问题描述】:
我正在为一个项目用 Java (lwjgl) 做一些 OpenGL 的东西,其中一部分包括以 OBJ 格式导入 3d 模型。一切看起来都很好,直到我尝试置换顶点,然后模型分解,你可以看穿它们。 这是来自搅拌机的 Suzanne,UV 映射为完全黑色的纹理(为了可见性)。在片段着色器中,我根据片段法线和世界向上向量之间的片段角度为片段添加一些白色:
到目前为止一切顺利。但是当我对相同的顶点应用一个小的 Y 分量位移时,我希望看到面“伸展”起来。相反会发生这种情况:
顶点着色器:
#version 150
in vec3 position;
in vec2 texCoords;
in vec3 normal;
void main()
{
vertPosModel = position;
cosTheta = dot(vec3(0.0, 1.0, 0.0), normal);
if(cosTheta > 0.0 && cosTheta < 1.0)
vertPosModel += vec3(0.0, 0.15, 0.0);
gl_Position = transform * vec4(vertPosModel, 1.0);
}
片段着色器:
#version 150
uniform sampler2D objTexture;
in vec2 texcoordOut;
in float cosTheta;
out vec4 fragColor;
void main()
{
fragColor = vec4(texture(objTexture, texcoordOut.st).rgb, 1.0) + vec4(cosTheta);
}
【问题讨论】:
-
请在您投反对票之前告诉我如何改进我的问题。不要做懦夫。