我正在用C++开发一个带有OpenGL ES 2.0东西的Android 2.2应用程序。从顶点和片段着色器中删除法线
这里是我的顶点和片段着色器:
static const char* cubeMeshVertexShader = "
attribute vec4 vertexPosition;
attribute vec4 vertexNormal;
attribute vec2 vertexTexCoord;
varying vec2 texCoord;
varying vec4 normal;
uniform mat4 modelViewProjectionMatrix;
void main()
{
gl_Position = modelViewProjectionMatrix * vertexPosition;
normal = vertexNormal;
texCoord = vertexTexCoord;
}
";
static const char* cubeFragmentShader = "
precision mediump float;
varying vec2 texCoord;
varying vec4 normal;
uniform sampler2D texSampler2D;
void main()
{
gl_FragColor = texture2D(texSampler2D, texCoord);
}
";
对OpenGL ES 2.0的发展我很新。
有人告诉我,如果我想渲染灯光,我必须对顶点和片段着色器进行一些复杂的修改。所以,我不怎么做,法师是没有必要的。
我的问题是:
如何修改顶点和片段着色器不使用法线?
谢谢
无论如何,您的正常转换代码是不正确的。应`正常= vec4(逆(转置(MAT3(modelViewProjectionMatrix)))* vertexNormal.xyz,0.0);`在顶点着色器。 – kvark 2011-02-11 16:32:53