从顶点和片段着色器中删除法线

时间:2011-01-11 12:05:28

标签: android opengl-es-2.0 fragment-shader vertex-shader

我正在用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开发的新手。

有人告诉我,如果我想要渲染灯光,我必须对顶点和片段着色器进行一些复杂的修改。所以,我不知道怎么做,不需要法线。

我的问题是:

如何修改顶点和片段着色器以避免使用法线?

由于

1 个答案:

答案 0 :(得分:0)

我认为如果你想要照明,就无法使用法线。我通常从我的3d包中导出法线并使用它们,但你总是可以在c ++代码中动态创建它们。 http://www.codeguru.com/cpp/g-m/opengl/article.php/c2681