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;
5ms가 너무 빠르면 하드 디스크의 평균 탐색 시간이 해당 시간 순으로 나타납니다. 그런 다음 bmp 파일에서 4MB 정도의 데이터를로드합니다. 200MB/s의 일반적인 하드 디스크 속도는 20ms 정도 걸립니다. 그리고 그것은 모든 처리가 데이터 자체에서 수행되기 전에 이루어졌습니다. – jcoder
5ms는 하드 디스크에서가 아니라 표면에서 메모리로 로딩하는 데 걸리는 시간입니다. 더 나은 방법으로 이미지를 렌더링합니다. 파일 (어쩌면 뭔가 다른 표면)? – meirrav
맞아요, 당신의 예제가 파일에서 로딩되었지만 ... 원하는 모든 것을 텍스처 오브젝트에 미리로드하고 필요할 때 빠르게 그릴 수 있습니까? – jcoder