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 の開発に非常に慣れていません。

レンダリングにライトが必要な場合は、頂点シェーダーとフラグメント シェーダーに複雑な変更を加える必要があると誰かに言われました。だから、私はそれを行う方法はありません。法線は必要ありません。

私の質問は:

法線を使用しないように頂点シェーダーとフラグメント シェーダーを変更するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

照明が必要な場合は、法線を使用する方法はないと思います。私は通常、3D パッケージから法線をエクスポートして使用しますが、C++ コードでいつでもオンザフライで作成できます。 http://www.codeguru.com/cpp/gm/opengl/article.php/c2681

于 2011-01-11T12:20:29.463 に答える