2011-01-11 81 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

相關問題