Motorola Atrix에서 라이브 벽지가 제대로 작동하지 않습니다. 그것은 안드로이드 2.3와 주식 ROM이 있습니다. 조각 쉐이더 명령이 투명한 부분이없는 이미지로 작동하지 않습니다. 문제는 안드로이드 2.3, 모토로라 드로 이드 CM9, 아수스 트랜스포머 4.0, 삼성 갤럭시 노트 4.0에 나타나지 않습니다. 문제는 모토로라 Atrix 전화에 매우 특정한 것 같습니다.
우리는 ETC1 압축 텍스처를 사용하므로 별도의 텍스처 샘플러를 통해 알파 채널이 쉐이더로 전달됩니다. sTexture
은 주요 확산 텍스처에 사용되고 sAlpha
에는 흑백 채널이 있습니다. 그래서이 문제를 해결했습니다ETC1 압축 텍스처가 Motorola Atrix에서 작동하지 않습니다.
private final String mVertexShader = "uniform highp mat4 uMVPMatrix;\n" +
"attribute highp vec4 aPosition;\n" +
"attribute highp vec2 aTextureCoord;\n" +
"varying mediump vec2 vTextureCoord;\n" +
"void main() {\n" +
" gl_Position = uMVPMatrix * aPosition;\n" +
" vTextureCoord = aTextureCoord;\n" +
"}\n";
private final String mAlphaFragmentShader = "precision mediump float;\n" +
"varying mediump vec2 vTextureCoord;\n" +
"uniform sampler2D sTexture;\n" +
"uniform sampler2D sAlpha;\n" +
"void main() {\n" +
" vec4 base = texture2D(sTexture, vTextureCoord);\n" +
" gl_FragColor = base;\n" +
" if(texture2D(sAlpha, vTextureCoord).r < 0.5){ discard; }\n" +
"}";
'base.a '가 존재하며 0.5 이상입니까? – tolgap
@tolgap 죄송합니다. 쉐이더 코드가 잘못되었습니다 (단일 텍스처의 알파 채널을 사용하는 이전 쉐이더였습니다. ETC1 텍스처에는 알파가 없으므로 2 개의 텍스처를 사용하도록 쉐이더를 수정했습니다). 질문을 편집했습니다. 이제 올바른 꼭지점과 조각 셰이더가 있습니다. – keaukraine
내 개발 장치에 Atrix를 사용하고'discard' 문이 정상적으로 작동합니다. if 블록 안쪽에있는 다른 것을하려고하면 폐기가 아닌가요? (말하자면 버리지 말고 노란색으로 설정하십시오). – Tim