2013-10-04 8 views
0

수천 개의 큐브로 구성된 드로잉 표면입니다. 그러나 내가 양의 Z 방향으로보고있을 때, 그것이 빛이있는 곳이며, 낮은 fps와 인공물을 얻습니다. 1 이 나는 ​​양의 Z 방향으로 찾고 있어요 때의 모습이다가도 눈에 띄게 FPS 방울 : 1OpenGL 특정 방향을 볼 때 FPS가 낮음

+0

컬링을 구현 했습니까? 큐브를 만질 때 어떻게 렌더링합니까? 낮은 fps는 일반적으로 많은 계산을 나타냅니다. 가능한 경우 정점 수를 줄이지 않으면 발생할 수 있습니다. – Femaref

+0

나는 뒷면 새김을 가능하게했다. 큐브는 단일 일 때 그대로 건 드리면 렌더링됩니다. – user1760770

+0

유물은 정확히 어떻게 보이나요? – Femaref

답변

3

당신은 아마의 의존 이 내가 음의 Z 방향으로 찾고 있어요 때 모습입니다 큐브가 렌더링되는 순서. 그것은 + Z 또는 -Z를 보는 것의 차이점을 설명 할 것입니다. 전방으로 렌더링 할 때 모든 큐브의 모든 조각이 렌더링됩니다. 깊이 테스트로 앞뒤로 렌더링 할 때 대부분의 조각은 버려집니다. 당신이보고있는 인공물에 관해서는, Z- 싸우는 수 있지만, 그것은 긴 총입니다.

+0

그건 의미가 있습니다. 수동 솔루션 이외의 렌더링을 앞뒤로 켤 수있는 다른 방법이 있습니까? – user1760770

+0

여러 가지 방법으로 렌더링을 최적화 할 수 있습니다. 정말 당신의 코드의 실제 적용이 무엇인지에 달려 있습니다 (저는 여러분이 바닥을 그리기 위해 수천 개의 큐브를 사용하고 싶지 않다고 생각합니다). 그러나 특정 경우에, 폐색 된면을 렌더링하지 않도록 (폐색 쿼리, 뒷면면 제거, 정렬, 하나의 큰 구체 렌더링 ...). 우리는 당신을 더 도울 수있는 더 자세한 정보가 필요합니다. 하지만 이미 시도해 볼 수 있다고 생각합니다. 희망이 도움이 –

+1

대단히 고마워요 :) – user1760770

0

성능 저하가 얼마나됩니까? 지오메트리의 Z 전용 사전 통과를 수행하고 색상 버퍼에 쓰는 것을 건너 뛰고 (매우 단순한 통과 쓰레드 쉐이더를 사용하는 경우) 순서가 잘못되거나 정렬되지 않은 형상이있는 상황에서 성능을 크게 향상시킬 수 있습니다. 유효 기간 제한. 그러나 이것은 복잡한 조각 처리를 할 때만 도움이됩니다. 기본적으로 모든 것을 두 번 그리기 때문에 두 번 정점 변환 오버 헤드가 발생합니다. 큐브의 표면을 구성하는 것이 정확히 대형 평면을 렌더링하는 가장 효율적인 방법이 아니기 때문에 상황은 정점 또는 단편 경계 일 수 있습니다.

다른 제안은 "수천 개의 큐브"로 구성된 장면 렌더링이 복셀 축소와 유사한 것을 구현하는 것임을 말합니다. 이 예제의 모든 큐브는 동일한 평면에있는 것처럼 보이므로 이러한 큐브 컬렉션의면을 인접한 큐브를 결합하는면으로 쉽게 대체 할 수 있습니다. Minecraft는 greedy meshing 알고리즘을 사용하여 장면의 동적으로 업데이트 된 부분을 주기적으로 다시 메쉬함으로써이를 수행합니다.

물론 공간 분할이 다른 문제이지만, 이미 시스템에 일종의 시스템이 있다고 가정합니다.

+0

예, 있습니다. 나는 Jean-Simon Brochu가 back to front 렌더링 성능을 제안하면서 원래 게시물에 문제가있었습니다. 나는 이미 그것을 바꿨고 그것은 잘 동작합니다. 그래도 통찰력을 가져 주셔서 감사합니다. – user1760770

관련 문제