2011-01-11 83 views
0

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

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

我的问题是:

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

谢谢

+0

无论如何,您的正常转换代码是不正确的。应`正常= vec4(逆(转置(MAT3(modelViewProjectionMatrix)))* vertexNormal.xyz,0.0);`在顶点着色器。 – kvark 2011-02-11 16:32:53

回答

0

我认为如果你想有照明是没有办法使用法线。我通常从我的3D包中导出法线并使用这些法线,但是您可以随时在您的C++代码中创建它们。 http://www.codeguru.com/cpp/g-m/opengl/article.php/c2681

+0

谢谢,但我想从顶点和片段着色器中删除。此时我不想要任何照明。我要把灯光烧成纹理。 – VansFannel 2011-01-11 12:27:17

相关问题