Loading...
2010. 4. 21. 00:00

dx10 창생성

1. 장치와 스왑체인 생성 스왑체인의 속성값을 설정 하기 위해 DXGI_SWAP_CHAIN_DESC 구조체를 사용한다. DXGI_SWAP_CHAIN_DESC scd; ZeroMemory( scd, sizeof(*scd) ); scd->BufferCount = 1; scd->BufferDesc.Width = width; scd->BufferDesc.Height = height; scd->BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; scd->BufferDesc.RefreshRate.Numerator = 60; scd->BufferDesc.RefreshRate.Denominator = 1; scd->BufferUsage = DXGI_USAGE_RENDER_TARGET_..

__FILE__, __FUNCTION__, __LINE__

__FILE__, __FUNCTION__, __LINE__ __FUNCTION__은 비표준 -> __func__가 표준. 위의 매크로를 사용하여 파일명, 함수명, 해당 줄 위치를 표시한다. 예를 들어 로그를 남기거나 할 때나 assert같은 곳에 쓰면 유용할 것 같다.

c++ 생각하기 5.

Pimple idiom Pimpl은 Pointer to IMPLementation의 약자. 기본적인 내용은 인터페이스와 구현을 분리한다는 것. 실제 멤버를 추가해도 기본 layout에 변화를 주지 않기 떄문에빌드시간을 줄일 수 있다(재컴파일 하지 않는다). 의존성을 줄인다. 하지만 코드가 늘어나고(layout과 실제내용을 따로 작성), 동적 할당과 해제를 해야 한다. 참고 http://mkseo.pe.kr/blog/?p=841 http://decoder.tistory.com/616

EnterCriticalSection 사용할때 주의 할점

출처 : http://blog.naver.com/process3?Redirect=Log&logNo=20026509730 CriticalSection 은 vista 에서 데드락에 빠질 수 있습니다. 이 내용에 대해서 말씀 드리는 것은 아니에요 [문제 발생 원인] EnterCriticalSection 의 API 를 MSDN 에서 확인 해 보면 리턴값이 VOID 형 입니다. 즉, 이 함수를 호출한 후에 성공했는지 실패했는지 확인 할 수가 없습니다. 그리고 일반적으로 우리가 사용 할 때도 리턴값을 확인하지 않습니다. 그런데 만약에 시스템에 메모리가 low memory situations 상태 일 때(가용메모리가 부족 할 때) EnterCriticalSection 함수 호출한 곳에서 Exception 이 발생 합..

c++ 생각하기 3.

1. new, delete, operator new, operator delete, placement new new와 operator new의 차이? new의 동작은 메모리의 할당, 생성자를 호출하여 초기화 수행이다. operator new의 동작은 메모리의 할당. new 연산자는 우리가 바꿀 수 있는 부분이 아니다. 우리가 바꿀 수 있는 부분은 객체를 담을 메모리를 할당하는 방법 뿐이다. new 연산자는 메모리 할당을 위해 어떤 함수를 호출하는데 이 함수를 오버로딩 하는 것이다. 이것이 operator new이다. 즉 우리는 생성자까지 호출되어 초기화된 객체만을 받을 수 있는 것이다. 왜냐하면 객체는 딱 한번 초기화 될 수 있기 때문이다. 하지만 할당받은 미초기화 메모리가 있다면 이를 객체형태로 만들고..

winapi의 오류를 문자열로 출력하기.

win api의 실패시 오류값은 dword. 내부로 들어가보면 알수없는 숫자들이 많다. 이를 문자열로 전화해서 출력하기 위해 GetLastError으로 에러 숫자코드를 받아 FormatMessage를 사용하여 바꾸어 준다. #include void PrintError(DWORD dwErrorNo); ... void PrintError(DWORD dwErrorNo) { LPVOID lpMsgBuf; if (!FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwErrorNo, MAKELANGID(LANG_NEUTRAL, SUBLAN..

가변 인수를 가지는 함수 및 매크로 만들기

출처 : http://uuzazuk9.egloos.com/906491 ANSI C 버전 ================================================================================ #include #include int average(int first, ...); void main( void ) { /* Call with 3 integers (-1 is used as terminator). */ printf("Average is: %dn", average(2, 3, 4, -1)); /* Call with 4 integers. */ printf("Average is: %dn", average(5, 7, 9, 11, -1)); /* Call with jus..