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の開発に非常に新しいです。
誰かが、私がレンダリングにライトを必要とすると、頂点シェーダとフラグメントシェーダで複雑な修正を加えなければならないと言ってきました。だから、私はそれをする方法はありません、法線は必要ではありません。
私の質問は:
私は法線を使用していないため、頂点とフラグメントシェーダを修正するにはどうすればよいですか?
おかげ
通常の変換コードは、とにかく正しくありません。頂点シェーダで 'normal = vec4(inverse(transpose(mat3(modelViewProjectionMatrix)))* vertexNormal.xyz、0.0);とする必要があります。 – kvark