전체 글 275

Bandi Audio Library

출처 : http://www.bandisoft.com/bandi_audio_library/ 사용 방법 먼저 헤더파일을 include 하고, 클래스 팩토리와 오디오 재생 인터페이스를 헤더파일에 선언합니다. #include "BandiAudio.h" CBandiAudioFactory m_baFactory; IBaCon* m_pBaCon1; DLL을 로드하고, 오디오 재생 인터페이스의 인스턴스를 생성하고 초기화 합니다. m_baFactory.Create(BANDIAUDIO_RELEASE_DLL_FILE_NAME); m_pBaCon1 = m_baFactory.CreateBaCon(); m_pBaCon1->Create(::AfxGetInstanceHandle(), m_hWnd); 오디오를 재생합니다. m_pBaC..

Game Dev/Binary 2008.08.12

The Function Pointer Tutorial

원문 : http://alones.byus.net/moniwiki/wiki.php/function_pointer?action=show // C // C int (*pt2Function)(float, char, char) = NULL; // C++ int (TMyClass::*pt2Member)(float, char, char) = NULL; int (TMyClass::*pt2ConstMember)(float, char, char) const = NULL; 함수 포인터 배열은 어떻게 사용하는가? 함수 포인터 배열의 동작은 매우 흥미롭다. 인덱스를 이용해서 함수를 선택할 수 있다. 구문은 복잡해 보이고 종종 혼란을 야기하기도 한다. 아래 코드에서 C와 C++에서 함수 포인터 배열을 정의하고 사용하는 두 가지..

Game Dev/Scrap 2008.08.11

정밀도가 높은 수행시간 측정

LARGE_INTEGER lStart, lEnd, lFreq; if (QueryPerformanceFrequency(&lFreq)) { QueryPerformanceCounter(&lStart); // Do Something QueryPerformanceCounter(&lEnd); TRACE("%d msec", (lEnd.QuadPart-lStart.QuadPart) * 1000 / lFreq); TRACE("%d nsec", (lEnd.QuadPart-lStart.QuadPart) * 1000000 / lFreq); } else { // CPU 속도가 2GHz를 초과하는 하이퍼 스레드 컴퓨터, // 이중 프로세서 컴퓨터 또는 단일 프로세서 컴퓨터에서는 // 게임과 같은 특정 프로그램이 제대로 실행되지 ..

Game Dev/Article 2008.08.07

Internal Reference Count

IUnknown Interface를 상속하는 Object들은 내부적으로 Reference Count를 통하여 자원을 관리한다. IUnknow Interace에는 AddRef, QueryInterface, Release 등 명시적인 외부 Interface가 존재하지만, 내부적으로 Reference Count를 증가, 감소하는 함수들이 있으므로 이러한 함수를 호출할 때는 Reference Count를 원래대로 복구시켜야 한다. 다음은 DirectX SDK 9.0c에서 발견한 Internal Reference Count 변경 함수 목록이다. 이 Get* 함수들은 사용한 후 반드시 Release 해주어야 한다. ID3DXRenderToSurface::GetDevice ID3DXRenderToEnvMap::Get..

Game Dev/Article 2008.08.06

rand 함수의 올바른 분포

원문 : http://www.gpgstudy.com/forum/viewtopic.php?t=19568 1. rand() % 1000 2. rand() * 1000 / RAND_MAX 위의 경우 1번 보다는 2번의 연산이 더 정확한 분포를 보여준다. 그 이유는 다음과 같다. RAND_MAX가 32767이라고 할 때 나머지가 0~767인 것은 33개, 768~999인 것은 32개입니다. 그럼 나머지가 0~767인 것은 10,000,000/32768*33 = 10070번, 768~999인 것은 10,000,000/32768*32 = 9765번쯤 나온다고 예측할 수 있습니다. 따라서 Rand 함수를 이용하여 특정 범위의 수를 생성하려고 할 때 다음과 같이 프로그램을 작성해야 한다. srand(time(NULL)..

Game Dev/Article 2008.07.29

Device Lost Handling

원문 : http://www.gpgstudy.com/gpgiki/DxDeviceLostHandling //**** 디바이스 리소스 인터페이스.. // 디바이스 의존적인 리소스들의 추상클래스. struct IDeviceRes { virtual void Invalidate() = 0; virtual bool SetValidate() = 0; }; //**** 텍스쳐 클래스 class CTextureRes : public IDeviceRes { public: virtual void Invalidate() { 텍스쳐 해제; } virtual bool SetValidate() { 텍스쳐 다시 로드; } bool Load(); void Unload(); protected: char m_szFileName[256];..

Game Dev/Scrap 2008.07.23