Opengl es. 스크롤 3 레이어 스타 필드 텍스처 스크롤 60-> 40 fps에서 나를 얻을 수 있습니다
문제
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 기술도 효과가있을 것입니다.