2012-09-05 4 views
3

loadSurfaceFromFile을 사용하여 화면에 렌더링하기 위해 비트 맵을로드하려고합니다. 로드하고 싶은 이미지는 1280 * 1024이며,이 이미지를로드하는 데 약 35ms가 걸립니다. 그것은 훨씬 빨리로드해야합니다 (5ms와 같은) 것 같습니다. 무엇을 잘못하고 있습니까?directx9를 사용하여 서페이스를로드하는 것이 너무 느립니다.

편집 코드 :

QueryPerformanceCounter(&liStart2); 
int size = load_file_to_memory(s.c_str(),&content); 
QueryPerformanceCounter(&liStop2); 
QueryPerformanceCounter(&liStart); 
D3DXLoadSurfaceFromFileInMemory(surface,NULL,NULL,content,size,NULL,D3DX_DEFAULT,0,NULL); 
QueryPerformanceCounter(&liStop); 
LONGLONG llTimeDiff = liStop.QuadPart - liStart.QuadPart; 
double dftDuration = (double) llTimeDiff * 1000.0/(double) Frequency.QuadPart; 
LONGLONG llTimeDiff2 = liStop2.QuadPart - liStart2.QuadPart; 
double dftDuration2 = (double) llTimeDiff2 * 1000.0/(double) Frequency.QuadPart; 
+0

5ms가 너무 빠르면 하드 디스크의 평균 탐색 시간이 해당 시간 순으로 나타납니다. 그런 다음 bmp 파일에서 4MB 정도의 데이터를로드합니다. 200MB/s의 일반적인 하드 디스크 속도는 20ms 정도 걸립니다. 그리고 그것은 모든 처리가 데이터 자체에서 수행되기 전에 이루어졌습니다. – jcoder

+0

5ms는 하드 디스크에서가 아니라 표면에서 메모리로 로딩하는 데 걸리는 시간입니다. 더 나은 방법으로 이미지를 렌더링합니다. 파일 (어쩌면 뭔가 다른 표면)? – meirrav

+0

맞아요, 당신의 예제가 파일에서 로딩되었지만 ... 원하는 모든 것을 텍스처 오브젝트에 미리로드하고 필요할 때 빠르게 그릴 수 있습니까? – jcoder

답변

1

당신이하고 싶은 여러 로더 스레드를 사용하여로드 대기 시간을 숨기는 것입니다. Here's 디스크에서 텍스처로드 성능에 대한 설명. 나 자신은 거기에 기사에 나와있는 마지막 방법을 활용했다 (존 와트).

희망이 도움이됩니다.

+0

대기 시간 숨기기 가능한 해결책이지만 여전히 이해가 안 돼요 표면/텍스처 로딩에 너무 오래 걸리는 이유는 무엇입니까? (메모리에서 장치로로드하는 데 20ms) – meirrav

+0

코드에서 병목 현상을 확인하는 코드를 작성 했습니까? PNG 디코딩입니까? 독서 그 자체? 제가 지적한 토론은 느린 것에 따라 무엇을해야하는지에 대한 많은 도움이되는 힌트를 가지고 있습니다. – Ani

+0

죄송합니다 - "내 업데이트 코드입니다"라는 것이 무슨 뜻인지 이해할 수 없습니다. 분명히 해줄 수 있겠 니? – Ani

관련 문제