Я не могу получить правильную штриховку на всех гранях куба, который я нарисовал.Я получаю плавный переход от одной грани к другой грани, которая не показывает кромку должным образом.
При другой грани (где я получаю желаемую грань) я получаю штриховку так, чтобы она отображалатреугольники, которые составляют это лицо.Я считаю, что проблема с нормами, которые я указываю.Я прикрепляю свою вершину и нормальную матрицу и мой код вершинного и фрагментного шейдера.вершина и нормальная матрица одинаковы.
Думаю, проблема в нормалях, но я пробовал с ними почти все, но эффект не меняется.
//normal matrix and vertex matrix are same
static const float normals[]=
{
//v0,v1,v2,v3,
//v4,v5,v6,v7
0.5,0.5,0.5, -0.5,0.5,0.5, -0.5,-0.5,0.5, 0.5,-0.5,0.5,
0.5,0.5,-0.5, -0.5,0.5,-0.5, -0.5,-0.5,-0.5, 0.5,-0.5,-0.5
};
//vertex shader
attribute vec4 color;
attribute vec4 position;
attribute vec4 normal;
uniform mat4 u_mvpMatrix;
uniform vec4 lightDirection;
uniform vec4 lightDiffuseColor;
uniform float translate;
varying vec4 frontColor;
//varying vec4 colorVarying;
void main()
{
vec4 normalizedNormal = normalize(u_mvpMatrix* normal);
vec4 normalizedLightDirection = normalize(lightDirection);
float nDotL = max(dot(normalizedNormal, normalizedLightDirection), 0.0);
frontColor = color * nDotL * lightDiffuseColor;
gl_Position = u_mvpMatrix * position;
}
//fragment shader
varying lowp vec4 frontColor;
void main()
{
gl_FragColor = frontColor;
}
Пожалуйста, помогите?Заранее спасибо !!