2006년 08월 05일
[DirectX]멀티 스레드를 이용한 리소스 로딩
게임을 하다보면 랙이라 불리는 게임의 메인루틴이 멈추는 순간이 있는데 이는 파일입출력, 버퍼 생성, d3d Surface 락, 생성등의 작업 수행시 일어나는 불가피한 게임 메인루틴의 지연순간을 말하는 것이다.
일단 리소스의 정의는 파일에서 읽어들이는 데이터라고 한정을 하고 게임내 리소스 객체들의 로딩및 생성시에, 로딩루틴과 메인루틴을 분리하여, 메인루틴의 지연현상을 없애는 방법 2가지를 알아 보자.
1. 맵단위나 존단위로 리소스를 분류한뒤, 맵에 들어갈 시나, 존 이동시에
전에 들고있던 리소스들을 릴리즈 시키고, 새 맵의 데이터를 로딩하는 방법.
2. 맵을 일정크기로 나누고(sector,block) 실시간으로 일정범위안에 들어
있는 리소스들을 로딩하고, 일정범위를 벗어난 객체들을 릴리즈시크는 방법.
1번의 방법의 경우, 처음 시작시에 리소스들을 다 로딩하므로 실제 게임시 맵의 교체가 없다면 로딩에 의한 지연 현상이 없지만 이 방법은 맵의 규모와 맵안에 존재하는 리소스의 양에 비례해서 로딩시간이 길어지고, 모든 리소스들을 들고 있어야 하므로 메모리를 많이 차지하여 클라이언트가 무거워지고, 고가상메모리까지 사용함으로써 하드디스크 스와핑까지 일어나 전체적속도가 급격히 떨어지는등.. 일정규모 이상의 맵이나 리소스를 가지는 게임의 경우 사용하기 부적합한 방법이라 할 수 있다.
따라서 D3D Device 생성시에 D3DCREATE_MULTITHREADED라는 옵션을 줘서 Device Locking 작업시에 전역 크리티컬 섹션을 걸수 있게 되어있기는 하지만 이 옵션으로 객체 생성시에 퍼포먼스 저하의 우려가 있고 거기다 D3D Buffer Pool 이나 등등의 엔진내 모든 부분에서 멀티스레드 작업을 염두해 둔다는 것은 여간 번거롭고 여러명이서 코딩을 해나가는 팀작업에서는 위험한 일이라고 한다.
..라고는 하지만 D3DCREATE_MULTITHREADED를 줘서 간단하게 해결을 했다. 대형 게임을 제작한다면 모를까 지금 내가 하고 있는 작업은 이정도로도 충분할 것 같네~^^ 동영상 랙 문제는 이걸로 해결~~
//출처 : http://blog.naver.com/wizardbug/10026916
# by | 2006/08/05 01:11 | Knowledge-Warehouse | 트랙백(11) | 덧글(3)





제목 : Buying cod vicodin.
Signs of vicodin addiction. Vicodin. Buy vicodin online....more
제목 : Xanax 2 milligram.
What happens when you crush xanax xr. Buy xanax without prescription in usa. Pharmacy order generic xanax. Uhi foundation forums xanax cheap phentermine. Xanax side effects....more
제목 : Soma.
Chevelle soma. Soma cube. Soma juice. Cheap soma. Soma. Pornstar soma. Ashes of soma lyrics. Soma san diego....more
제목 : Phentermine overnight.
Phentermine. Phentermine free shipping. Phentermine cash on delivery....more
제목 : Buy adderall.
How do you dissolve adderall. Buy adderall online no prescription needed. Adderall. Adderall addiction....more
제목 : Ambien safety profile.
Ambien. Ambien side effects....more
제목 : Phentermine hcl.
Phentermine without prescription. Phentermine. Buy phentermine on line....more
제목 : Phentermine ingredient.
Phentermine online. Buy phentermine. Order phentermine uk. Phentermine result. Mg buy phentermine. Effects phentermine. Phentermine yellow. Keyword phentermine....more
제목 : Cialis american pharmacy.
Buy cialis. Cialis best price buy online. Cialis users. Cialis....more
제목 : Levitra.
Side effects of levitra. Levitra. What is the correct dosage for levitra....more
제목 : Cialis dosage.
Buy cialis. Cialis purchase. Compare cialis and viagra. Cialis attorney ohio. Cialis....more
아님, 더 좋은 머신을 사면 되나? ㅡㅡ.
은면제거니, 이런거 다 필요없는거였어? ㅠㅠ