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 개발 : 여기
내 정점과 프래그먼트 쉐이더입니다.누군가 내 렌더링에 불이 켜지면 꼭지점과 조각 쉐이더에서 복잡한 수정을해야한다고 말했습니다. 그래서, 어떻게하는지, 법선은 필요하지 않습니다.
내 질문은 :
내가 법선을 사용하지 않는 정점과 프래그먼트 쉐이더를 수정하려면 어떻게합니까?
감사
정상적인 변환 코드가 잘못되었습니다. vertex shader에서'normal = vec4 (inverse (transpose (mat3 (modelViewProjectionMatrix)) * vertexNormal.xyz, 0.0);이어야합니다. – kvark