从顶点和片段着色器中删除法线
问题描述:
我正在用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的发展我很新。
有人告诉我,如果我想渲染灯光,我必须对顶点和片段着色器进行一些复杂的修改。所以,我不怎么做,法师是没有必要的。
我的问题是:
如何修改顶点和片段着色器不使用法线?
谢谢
答
我认为如果你想有照明是没有办法使用法线。我通常从我的3D包中导出法线并使用这些法线,但是您可以随时在您的C++代码中创建它们。 http://www.codeguru.com/cpp/g-m/opengl/article.php/c2681
+0
谢谢,但我想从顶点和片段着色器中删除。此时我不想要任何照明。我要把灯光烧成纹理。 – VansFannel 2011-01-11 12:27:17
无论如何,您的正常转换代码是不正确的。应`正常= vec4(逆(转置(MAT3(modelViewProjectionMatrix)))* vertexNormal.xyz,0.0);`在顶点着色器。 – kvark 2011-02-11 16:32:53