Loading...

프로그램 수행 시간 측정

http://www.sarangnamu.net/basic/basic_view.php?no=2245&page=81&sCategory=0 어떤 작업을 수행하는데 걸리는 시간을 알고 싶은 경우는 흔한 경우죠 그런데 방법을 잘몰라서 그냥 넘어가는 경우가 많죠. 아래 소개된 방법이 가장 일반적인 방법이며 이보다 나은 방법은 아마 없을 겁니다. 별루 어렵진 않으니 찬찬히 보세요. 컴퓨터에는 Clock Ticks라는 것이 있습니다. 그리고 운영체제에는 어떤 프로세스가 시작한지 얼마나 지났는지 알려주는 clock()함수를 가지고 있구요. 이것을 이용하는 것입니다. clock_t current_tick = clock(); clock_t current_tick = clock(); 이 코드로 현재 프로세스가 실행한지 얼마나..

파일 검색, 파일 찾기

은근히 이런 일을 자주 할 때가 있다. 이번에 배포버전 만들기 전에 그래픽 데이터 파일의 중복검사 체크 메크로를 만들면서 상당히 많이 사용했던 기억이... CFileFind fileFinder; CString strFile = "*.*"; BOOL bResult = file.FindFile(파일 이름); // 파일의 존재유무 검사 if(!bResult) // case - 파일이 없을 경우 { } return FALSE;

마우스 커서 설정.

툴프로그램을 만들다 보면 시간을 많이 잡아먹는 기능을 추가해야 할 때가 있다. 그럴때는 사용자를 배려하는 마음으로 커서를 바꿔주자. // 모래시계 커서 HCURSOR hWaitCursor = ::LoadCursor(NULL, IDC_WAIT); HCURSOR hCursor = SetCursor( hWaitCursor ); .... // 커서복귀 SetCursor( hCursor );

unicode에서 한글출력

유니코드기반에서 fputws로출력을 하는데 이상하게 한글부분이 출력이 안된다. 유니코드기반의 함수에서 한글을 출력하기 위해서는 #include "locale.h" ... _wsetlocale(LC_ALL, L"korean"); ... wprintf(...) or fputws(...); 이러한 설정을해주어야 한다.

폴더지정 창 열기

CString strFolderName = _T("") ITEMIDLIST *pildBrowse; char pszPathname[MAX_FOLDERNAME_SIZE]; BROWSEINFO bInfo; memset( &bInfo, 0, sizeof(bInfo)); bInfo.hwndOwner = GetSafeHwnd(); bInfo.pidlRoot = NULL; bInfo.pszDisplayName = pszPathname; bInfo.lpszTitle = _T("폴더를 선택하세요"); bInfo.ulFlags = BIF_RETURNONLYFSDIRS; pildBrowse = ::SHBrowseForFolder(&bInfo); if( pildBrowse != NULL ) { SHGetPathFromIDLi..

InterlockedIncrement(), InterlockedDecrement()

상호잠금 함수(interlocked function)들은 다른 동기화 방법들에 비해 간단하고 빠르며 스레드를 차단하지도 않는다는 장점을 가지고 있다. Windows 의 상호잠금 함수는 InterlockedIncrement() 와 InterlockedDecrement() 이다. 이들은 32비트 부호 있는 정수들에 적용된다. 상호잠금 함수를 사용할 때, 주의할 점은 아래와 같다. * InterlockedIncrement 함수를 호출한 쓰레드가 N 의 새 값을 사용하기 전에 다른 쓰레드가 N 의 값을 변경할 가능성이 존재한다. * N 을 2 증가하기 위해서 InterlockedIncrement 함수를 연달아 두 번 호출하는 것은 위험하다. 이는 그 두 호출 사이에 다른 스레드가 실행될 가능성이 존재하기 때문이..

D3D에서 이용가능한 텍스처 메모리의 의미

출처 : http://blog.naver.com/lifeisforu/80022419898 현재 필자의 그래픽카드의 스펙은 다음과 같다. 칩종류 : Geforce 6200 DAC 종류 : Integrated RAMDAC 메모리 크기 : 256 MB 어댑터 문자열 : Geforace 6200 BIOS 정보 : Version 5.44.A2.10.00 이제 IDirect3DDevice::GetAvailableTextureMem 메서드를 호출하면 그 결과는 다음과 같다. 509607936 Direct3D API 도움말에는 IDirect3DDevice::GetAvailableTextureMem 에 대해서 다음과 같이 기술하고 있다. 인용: 반환값은 가장 가까운 MB 근처의 값이다. 이것은 비디오 메모리가 추정하는 ..

IDirect3DDevice9::GetAvailableTextureMem

사용 가능한 텍스처 메모리의 양의 추정값을 돌려준다. 구문 UINT GetAvailableTextureMem(VOID); 반환값 이 함수는, 사용 가능한 텍스처 메모리의 추정값을 돌려준다. 주의 돌려받는 값은, 가장 가까운 MB 에 말 수 있다. 이러한 처리를 하는 것은, 특정의 리소스에 의한 비디오 메모리의 소비에 영향을 주는 alignment나 다른 문제에 의해, 비디오 메모리의 추정값을 정확하게 요구할 수가 없기 때문이다. 애플리케이션에서는, 이 값을 사용해, 이용할 수 있는 메모리의 대범한 양을 추정해, 할당하려고 하는밉맵의 레벨수와 같은 리소스에 관한 거시적인 결정을 내릴 수 있지만, 다른 리소스를 할당하는데 충분한 메모리가 남아 있는지 등 작은 스케일의 결정에 사용할 수 없다.