2014-12-08 3 views
1

현재 비디오 게임 프로젝트를 진행 중입니다.OpenGL ES 2 텍스처 아틀라스 출혈 가장자리

내가 얻을 때 :

Matrix.orthoM(projectionMatrix, 0, 0, widthwindows, heightwindows, 0, -1, 3); 

모든 것이 좋아 보인다. 그러나 변수 widthwindows이 실제 화면 해상도와 다른 경우이 효과가 나타납니다. 내 타일의 일부가 곡선 또는 때문에

enter image description here

나는 다른 주제에서 precited 솔루션을 사용할 수 없습니다 어떤 너무도 -0.5 pixel에있다 그들은 여전히 ​​심지어 일부 타일은 때로 믿을 수 (주위 투명성을 얻을 그들에 아무런 영향 없다 예를 들어 64*64인데 12*64이므로 -0.5 pixel은 효과가 없습니다.

+0

이지도 책에서 밉 매핑을 사용하지 않으려하지만, 아마도 다른 문제가 발생할 수 있습니다. 어쨌든 시도해 볼 수 있습니다. –

+0

이미 완료되었으며 변경 사항이 없습니다. gemserk 프로세스를 사용하여 친구에 의해 텍스처 아틀라스에 내가 그걸 시작하는 방법을 몰라. 그것은 투명 테두리를 더 이상 얻지 못하는 것 같지만 왼쪽 또는 오른쪽으로 행렬을 움직일 때 나는 여전히 그것들을 얻습니다. 나는 위치 0에 있고 최대 범위 예를 들어있을 때 나는 그들을 얻지 못한다. 그래서 두 가지, 먼저 누군가가 나를 도발 할 수 있다면 : [link] (https://github.com/gemserk/imageprocessing) 그리고 누군가가 왜 매트릭스를 움직이면 항상 나타나는지 이해한다면? – disclique

답변

1

PMA (Pre Multiplied Alpha)로 작업하고 싶을 수도 있습니다. 투명도로 스프라이트를 그릴 때 여러 번 Normal 블렌딩 모드를 사용하십시오. 정상 블렌딩 모드에서는 스프라이트의 픽셀 색상이 해당 픽셀의 알파에 의해 곱해지고 소스 픽셀 알파의 1을 보완 한 배경 픽셀 색상에이를 더합니다. 그러나 이것은 스프라이트의 크기를 조절하고 필터링 할 때 반투명 픽셀이 어둡게 보일 수있는 경우가 대부분입니다.

이 문제를 해결하려면 PMA를 사용하십시오. 블렌드에서 스프라이트의 색상에 스프라이트의 알파를 곱하기 때문에 알파 대신 곱한 픽셀 색상을 대신 저장할 수 있습니다. 블렌딩 모드는 다음과 같습니다. 알파를 곱하지 않고 PMA 픽셀 색상을 배경 픽셀에 원본 픽셀 알파의 1을 곱한 값에 더합니다.

GLES 2에서는 일반 혼합 모드는 다음과 같이 될 것입니다 :

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

PMA를 블렌딩 모드는 다음과 같이 표시됩니다

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

희망이 당신의 문제를 해결합니다.