Loading...

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..

IDXGIFactory::MakeWindowAssociation Method (Windows)

IDXGIFactory::MakeWindowAssociation Method Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to fullscreen or vice versa). Syntax Copy HRESULT MakeWindowAssociation( [in] HWND WindowHandle, [in] UINT Flags ); Parameters WindowHandle [in] HWND The handle of the window that is to be monitored. This parameter c..

STL의 std::string::find_last_of 사용 시 주의 사항

출처 : http://alones.kr/blog/627 요즘 블로깅을 통 못했다. 1주일 정도.. 바쁘다는 핑계로 너무 게을러 진 것 같아서... 다시 매진해 본다. STL의 find_last_of를 착각하고 쓴 적이 있어서 이에 대해서 써보았다. in my wiki: http://alones.byus.net/moniwiki/wiki.php/find_last_of?action=show initial version: 2007.05.22 목차 1 결론 2 find_last_of의 가능한 착각 3 마지막 matching 되는 str의 index를 찾는 경우는 rfind()를 4 또 하나의 가능한 실수 size_t 5 Reference [edit] 1 결론 # 결론 부터 이야기 하면 STL의 std::strin..

InterlockedIncrement(), InterlockedDecrement()

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

2010. 6. 4. 01:02

반사

반사는.복잡하지만..평면반사는그다지.어렵지않다. 내부 내용은제꾸고.D2DXMatrixReflect함수를 쓰는게야. D3DXMATRIX T, R; // 반사행렬을 계산. D3DXPLANE plane(0.0f, 0.0f, 1.0f, -5.0f); D3DXMatrixReflect(&R, &plane); matWorld = matObjWorld * R; 반사된 장면을 렌더링할때는 거울내부에만 그려지도록 해야 하는데 이를 위해 스텐실버퍼를 사용해야 한다. - 일반 장면을 그린다. - 스텐실버퍼를 0으로 초기화한다. - 스텐실 버퍼에서 거울에 해당하는 픽셀들만 1의 값을 가지도록 한다. - 거울영역에 반사된 물체들을 그린다. 거울에 해당하는 삼각형을 렌더링할때는 스텐실버퍼만 변경되도록 지정해야 한다. 그릴때에 스텐..

2010. 6. 2. 22:21

shadow volume

한 광원에 의해 생성되는 그림자 영역. 광원이 여러개일 경우에는 각 광원에 대해서 고려해야 한다. - 전체장면을 일반적인 기법으로 렌더링 - 주어진 광원에 대해서 물체의 글미자볼륨의 실루엣들을 그린다. - 렌더타겟에 그리는것이 아니라 스텐실 버퍼를 갱신하기 위해 그리는 것이므로 후면버퍼와 깊이버퍼는 쓰기금지시킨다. - 실루엣들을 그릴 때에 전면에 대해서는 스텐실값 증가, 후면에 대해서는 스텐실값 감소. GSShadow_Input VS_Shadow(VSShadow_Input input) // 입력정점을 월드공간으로 변환한다. { GSShadow_Input output; output.pos = mul(float4(input.pos,1), matWorld); output.pos /= output.pos.w; ..

2010. 6. 2. 13:32

평면 그림자

평면그림자는 일반적으로 렌더링 후에 그림자를 위한 블렌딩을 추가하여 만든다. 그림자가 평면이 아닌 임의의 곡면에 맺히는 경우도 처리하고자 한다면 그림자볼륨을 써야 한다. D3DXMatrixShadow는 그림자 평면을 정규화 하고 그림자 평면과 광원의 방향으로부터 그림자변환 행렬을 계산한다. 광원타입이 방향광원인지 점광원인지에 따라 인자값이 다르다. lw(마지막인자)값이 0인것은 방향벡터이며 방향광원이다. lw(마지막인자)값이 1인것은 위치벡터이며 점광원이다. 장면의 모든 물체들을 일반적인 방법으로 그린다. 그 후에 그림자 변환행렬을 사용하여 삼각형들을 그림자가 맺힐 평면으로 납작하게 변환한다. 변환된 삼각형을 어둡게 반투명 블렌딩하여 그림자를 그린다. 그런데 여러개의 납작하게 변환된 그림자 삼각형들은 그..