3D 게임제작시 동적 리쏘스 로드 방법이 궁금합니다.

kjh721의 이미지

Ogre에 기초하여 게임엔진을 자체로 만들어서 쓰는데요, 동적리쏘스 로드 방법이 신통치 않아서 고수님들께 부탁 드립니다.
아주 넓은 바깥 환경의 씬을 형상하는 프로그람입니다.
분명히 동적로드는 해야 하는데...

구현한 내용은 아래와 같습니다.
- 현재 하나의 쓰레드내에서 렌더링도 하고 동적읽기도 진행합니다.
- 읽어내야 할 구역 A를 예측하고 그의 일부분씩 조금 조금 읽어내고요 필요없다고 예측되는 구역 B의 리쏘스는 다 파괴합니다.
이때 B구역은 A구역보다 아주 큽니다.(파괴구역이 읽기구역보다 넓다.)
- 지형관련정보만이 아니라 오브젝트에 해당된 리쏘스들도 읽어냅니다.
여기서 오브젝트들은 반복이용되는것이 많아 동적로드 않해도 되잖을까 생각합니다.

이렇게 구현하다보니 한쓰레드내에서 어느 순간에 자원을 불러내므로 약간의 렉이 자주 발생합니다. 결국 탁탁 채는 현상이 좀 심합니다.

대신 동적읽기를 다른 쓰레드를 만들어 하자니 렌더속도를 떨굴가 걱정됩니다.
어떤 책을 보니 렌더링루프내에는 자원의 창조를 하면 나쁘다고 되여있더군요. 그래서 미리 다 읽어들이라고 생각되네요. NVidia PerfHUD 프로그람에서도 게임 노는시에 (loop가 돌고있을때) 자원창조감시 기능이 있고요~

고수님들!
렌더링속도도 안떨구면서 렉도 안걸리는 그런 멋진 동적읽기 방법 가르쳐주세요!
(꾸벅)

grayger의 이미지

예전 같았으면 gpgstudy 에 올라올 법한 질문이 여기에.. ^^

저의 경우에는,,
한 셀(구역)에 채워질 모든 물체 생성 작업을 하나의 frame update 함수에서 처리하는게 아니라,
작은 작업으로 나누어 여러번에 걸쳐 처리하게 합니다. 물론 지나간 셀 해제 작업도 별도의 다른 타이밍에 합니다.

캐릭터가 순간적으로 다른 셀로 이동하는게 아니므로, 셀 이동에 필요한 최소 이동시간이 있을테고, 이 값을 5초라 가정하면
25fps하에서 125개까지 작업을 쪼갤수가 있죠.

______________________
http://www.grayger.com


______________________
http://www.grayger.com

kjh721의 이미지

도움 감사합니다. ^_^

그런데 이런생각이 드네요.
읽을것이 두개인데 하나는 큰 텍스쳐고 다른 하나는 용량이 작은 메쉬라고 가정하고 보면
메쉬는 재빨리 읽어내나 텍스쳐를 읽어내는 흐레임에서는 텍스쳐 용량이 커서 사용자눈에 거슬릴 정도로 렉이 생기지 않을까 걱정됩니다.
바로 이런 이유때문에 혹시나 동적읽기를 다른 쓰레드에 태워서 읽기를 부드럽게 하지 않겠는가 하고 생각됩니다.
저는 렌더링속도를 보장하기 위해 쓰레드를 따로 또 띄워서 동적읽기를 하고 싶지 않어요.
주 loop고리안에 동적읽기를 넣어도 될까요?
많은 분들 대답 부탁드립니다.