간단한 쉐이더를 사용하여 알파 방사형 그래디언트 효과 (조명 종류)를 만들려고합니다. 효과가 올바르게 생성되지만 그래디언트가 부드럽 지 않습니다. 정밀도가 highp로 설정되었으므로 어디를 봐야할지 모르겠습니다.OpenGL ES 쉐이더의 알파 그래디언트가 부드럽 지 않습니다.
이 쉐이더는 현재 OpenGL ES 2.0을 사용하는 Android에서 실행 중입니다.
정점 :
precision highp float;
attribute vec4 vPosition;
attribute vec2 vStaticInterpolation;
varying vec2 interpolator;
void main() {
interpolator = vStaticInterpolation;
gl_Position = vPosition;
}
조각 :
precision highp float;
uniform float alphaFactor;
varying vec2 interpolator;
float MAX_ALPHA = 0.75;
void main() {
float x = distance(interpolator, vec2(0.0, 0.0));
float alpha = MAX_ALPHA - MAX_ALPHA * x;
alpha = max(alpha, 0.0);
gl_FragColor = vec4(0.925, 0.921, 0.843, alpha);
gl_FragColor.a *= alphaFactor;
}
이 내 현재 쉐이더입니다
과 :
이 같은 그라데이션 현재 모습입니다
쉐이더는 vStaticInterpolation에서 보간에 대한 상수 속성 (-1.0에서 1.0까지)을받습니다. 실제 색상은 현재 셰이더에서 하드 코딩되어 있습니다.
그냥 궁금해서, 어떤 형식 열심히에 의해 기억하려고,이 내 응용 프로그램의 코드의 일부입니다 귀하의 프레임 버퍼 무엇입니까? RGBA8 같은 것을? – Dannie
표면이 RGB565였습니다. 이것이 문제였습니다. 아래의 답변이 정확합니다. – SirKnigget