Opengl es. 스크롤 3 레이어 스타 필드 텍스처 스크롤 60-> 40 fps에서 나를 얻을 수 있습니다

StackOverflow https://stackoverflow.com/questions/1627418

문제

2D 스페이스 스크롤 슈터의 배경을 그려야합니다. 나는 3 층의 별을 구현해야합니다. 하나의 먼 성운 (정말로 느리게 움직입니다), 백그라운드에서 하나의 멀리 떨어진 별 (느리게 움직이는 별 1 층), 다른 두 개 위에 가까운 별 (정상적인 움직임) 층.

내가 이것을 처음 시도한 방식은 별의 투명한 PNG 인 320 x 480의 3 텍스처를 사용하는 것이 었습니다. 나는 GL_BLEND 및 SRC_ALPHA, ONE_MINUS_SRC_ALPHA를 사용했습니다.

3GS에서도 결과는 크지 않았습니다. 1 세대 장치에서 FPS는 40..50으로 떨어 졌으므로이 문제를 잘못하고 있다고 생각합니다.

GL_BLEND를 비활성화하면 모든 것이 1 세대 장치에서도 훌륭하게 작동하며 FPS는 다시 60으로 돌아갑니다. 따라서 큰 투명한 텍스처를 벨트하려고한다는 사실이어야합니다.

문제는 다른 방법으로 어떻게하는지 모르겠다는 것입니다 ...

불투명 한 텍스처처럼 첫 번째 성운만 그린 다음 작은 점과 상단 별 레이어를 화면 주위로 움직이는 중간 및 상단 별 레이어를 모방해야합니까?

혼합 문제에 대한 다른 접근법이 있습니까? 렌더링 프로세스 속도를 높이는 방법은 무엇입니까? 하나의 큰 질감 (타일 세트)이 답입니까?

제발 도와주세요.

도움이 되었습니까?

해결책

나는 당신이 당신의 별이 어떻게 생겼는지 모르겠지만, 사용하여 별을 질감에서 지오메트리로 옮기려고 할 수도 있습니다. GL_POINTS 에서 DrawElements 또는 DrawArrays 아마도 상단 두 레이어를 형상 층으로 교체 할 수도 있습니다. 사용 포인트를 조작 할 수 있습니다 PointSize, PointSizePointerOES 그리고 PointParameter 포인트 렌더링을 수정합니다.

다른 팁

멀티 텍스트를 사용하여 속도가 상승하는지 확인하고 싶을 수도 있습니다. 각 다중 텍스트 단계에는 고유 한 변환 행렬이 할당 될 수 있으므로 각 레이어를 다른 속도로 번역 할 수 있어야합니다.

나는 모든 iPhone 모델이 두 개의 텍스처 단계를 지원한다고 생각하므로 두 개의 레이어를 단일 드로우 호출로 결합 할 수 있어야합니다. 세 번째 레이어의 블렌딩에 의지해야 할 수도 있습니다.

또한 알파 테스트 알파보다 빠를 수 있습니다 블렌딩.

행운을 빕니다!

뒷 성운은 반드시 불투명해야합니다. 다른 모든 것이 그 위에 그려지고 있으며, 나는 그 뒤에 유일한 것이 검은 색이라고 가정합니다. 또한 Prideout은 다음과 같은 요점이 있습니다. 스타 레이어가 효과적으로 1 비트 알파를 가질 수 있다고 가정하면 확실히 시도 할 수있는 것입니다. Harald가 언급 한 GL_POINTS 기술도 효과가있을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top