Loading...

mec++에 있는 auto_ptr

template class auto_ptr { public: explicit auto_ptr(T* p = 0); // 복사 생성자용 멤버 템플릿 template auto_ptr(auto_ptr& rhs); ~auto_ptr(); // 대입연산자용 멤버 템플릿 template auto_ptr& operator=(auto_ptr& rhs); T& operator*() const; T* operator->() const; T* get() const; // 현재의 dumb 포인터를 반환 T* release(); // 현재의 dumb 포인터에 대한 소유권을 박탈하고 그 포인터값을 반환 void reset(T* p=0); // 가지고 있는 포인터를 삭제 private: T* pointee; template frie..

none MFC에서 memory leak난 부분 찾기

http://blog.naver.com/codecastle?Redirect=Log&logNo=100036823549 none MFC에서 memory leak난 부분 찾기 1.요약 MFC를 사용하지 않는 프로젝트에서 memory leak난 부분을 trace하는 방법을 설명. 2.본문 만약 MFC를 쓰지않고 프로젝트(exe)를 만들게 되면 MFC를 쓴 프로젝트와 같이 메모리릭이 일어난 소스코드의 파일과 라인넘버가 나오지 않게 된다. 이유는 우리가 MFC를 짠 프로젝트에서 new나 alloc을 할때 DEBUG모드에서는 특별한 함수가 실행되기 때문일텐데, 이부분이 MFC에 종속적이기 때문이었다. 그래서 MFC에서 쓰는 방법과 동일하게 new를 만들어 보기로 했다. 일반적으로 VC에서 클래스를 만들면 *.cpp에..

2010. 5. 24. 00:39

RasterizerStateMesh

정점을 처리하는 기하처리 단계에서 정점을 입력받아 단편(fragment)들을 출력한다. 각 픽셀의 정보들을 클립공간에서 표현한 것이다. 뷰포트 변환을 사용하여 클립공간에서의 정점의 위치와 렌더타겟에서의 픽셀의 위치와의 관계를 계산한다. 래스터화 스테이지는 기본도형들을 클리핑하고, 기본 도형들 내의 픽셀들을 계산하여 각 픽셀마다 단편을 생성하여 픽셀셰이더를 호출하는 기능을 수행한다. .cpp 에서의 지정 D3D10_RASTERIZER_DESC rsdesc; ::ZeroMemory(&rsdesc, sizeof(rsdesc)); rsdesc.FillMode = D3D10_FILL_SOLID; rsdesc.CULLMode = D3D10_CULL_BACK; rsdesc.FrontCounterClockwise = ..

2010. 5. 23. 22:10

x파일 로딩

dx10에서는 dx파일을 위한 api를 지원하지 않아 dx9의 api를 사용하여 컨버팅 해야 한다. 책 예제의 클래스를 들고와서 유니코드 부분만 조금 고쳤다.

2010. 5. 23. 17:54

메쉬에 맵핑

아놔..먼가 계속했던거 하는 느낌이야..ㅡㅡ;. 언제까지 울궈먹을려고하는겐지... 기본 빛계산은 까먹으면 안되니까 다시 적어주고. float4 PS( PS_Input input ) : SV_Target { float3 lightDirection = float3(1.0f, -1.0f, 1.0f); float4 A = float4(0.2f, 0.2f, 0.2f, 1.0f); float3 E = float3(0.0f, 1.0f, -2.0f); float3 L = -normalize(lightDirection); float3 N = normalize(input.normal); float P = 8.0f; // power float D = saturate(dot(input.normal, L)); // diffus..

2010. 5. 23. 15:15

Texture Mapping

딱히...할만한.말이.없다. 굳이 있다면. 실수하지 말자는 정도. 그리고 상수값이 업데이트 되는 정도에 따라 상수버퍼를 따로 잡는게 좋다. cbuffer cbNerverChange { matrix matView; }; cbuffer cbChangeOnResize { matrix matProjection; }; cbuffer cgChangeEveryFrame { matrix matWorld; }; cbuffer cbConstant { float3 lightDirection = float3(1.0f, -1.0f, 1.0f); float4 ambientColor = float4(0.1f, 0.1f, 0.1f, 1.0f); }; float4 PS( PS_Input input ) : SV_Target { floa..

2010. 5. 23. 13:07

TextureAddressMode

텍스쳐 좌표가 [0,1]의 범위를 벗어날 경우의 처리방법을 텍스쳐 번지모드(Texture addressing mode)라고 한다. wrap mode : 텍스쳐 좌표 길이 1마다 반복. mirror mode : 매 행 또는 열이 이전 행 또는 열의 미러 clamp mode : [0,1]의 범위 외의 텍스쳐 좌표에 대해서는 동일 행 또는 열의 에지 필셀에서의 컬러를 사용. 0보다 작은 텍스쳐 좌표에 대해서는 0에서의 텍스쳐 컬러를, 1보다 큰 텍스쳐 좌표에 대해서는 1에서의 좌표 사용. border mode : [0,1]의 범위 외의 텍스쳐 좌표에 대해서는 테두리 컬러로 지정된 컬러를 사용한다. 어플에서 어드레스 모드를 설정해 줄 수 도 있지만 쉐이더해주는게 좀 더 간단하다. .cpp D3D10_SAMPLE..

일정한 크기의 빌보드.

너무 오래동안 삽질했다..젝1.!!!!!!! 카메라 거리에 따른 스케일량 공식 (카메라 FOV * 0.5f) * 카메라와의 거리 카메라와의 거리 D3DXVECTOR3 vLen = D3DXVECTOR3(m_pkRenderer->GetEyePos()->x - pkEntityFont->GetFontPos()->x, m_pkRenderer->GetEyePos()->y - pkEntityFont->GetFontPos()->y, m_pkRenderer->GetEyePos()->z - pkEntityFont->GetFontPos()->z); float fLen = D3DXVec3Length(&vLen); 스케일 값 float scale = tan(m_pkRenderer->GetFov()/2)*fLen*0.4f; 가장..