Angler Blog
-
ASE Animation [ *SCENE ]GamePrograming/Direct3D 2009. 3. 26. 10:38
ASE의 제일 앞쪽에 나오는 정보로 버전정보나 전체 프레임수 등 ASE에 대한 기본적인 정보를 표시해 준다. *SCENE { *SCENE_FILENAME "run_ex_00.max" *SCENE_FIRSTFRAME 4 *SCENE_LASTFRAME 20 *SCENE_FRAMESPEED 30 *SCENE_TICKSPERFRAME 160 *SCENE_BACKGROUND_STATIC 0.00000.00000.0000 *SCENE_AMBIENT_STATIC 0.00000.00000.0000 } *SCENE_LASTFRAME 과 *SCENE_TICKSPERFRAME 값을 곱하면, 애니메이션 TICK의 최종값을 알수 있다.
-
라이트 맵핑GamePrograming/Direct3D 2009. 3. 6. 15:57
VOID Render() { D3DXMATRIXA16 matWorld; ///후면 버퍼와 Z버퍼 초기화 g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0); /// 에니메이션 행렬 설정 Animate(); if(SUCCEEDED(g_pd3dDevice->BeginScene())) { g_pd3dDevice->SetTexture(0, g_pTex0); ///0번 텍스쳐 스테이지에 텍스쳐 고정(벽면) g_pd3dDevice->SetTexture(1, g_pTex1); ///1번 텍스쳐 스테이지에 텍스쳐 고정(라이트맵) ///0번 텍스쳐 : 0번텍스쳐 인덱스 사용 g_pd3dDevic..
-
MeshGamePrograming/Direct3D 2009. 3. 5. 14:09
한 Mesh안에 메티리얼 정보와, 텍스쳐 정보가 여러가지 이므로, 포인터 선언후 동적할당한다. LPDIRECT3D9g_pD3D= NULL;///D3D디바이스를 생성 LPDIRECT3DDEVICE9g_pd3dDevice= NULL;///렌더링에 사용될 D3D 디바이스 LPD3DXMESHg_pMesh= NULL;///메시 객체 D3DMATERIAL9*g_pMeshMaterials= NULL;///메시에서 사용할 재질 LPDIRECT3DTEXTURE9*g_pMeshTextures= NULL;///메시에서 사용할 텍스쳐 DWORDg_dwNumMaterials = 0L;///메시에서 사용중인 재질의 개수 [ D3DXLoadMeshFromX ] D3d 디바이스, LPD3DXBUFFER 임시버퍼, g_dwNumMat..
-
변경된 부분만 갱신 시켜주는 PatBlt랭귀지/MFC 2008. 11. 20. 12:23
BOOL CMapEditView::EraseBackground(CDC* pDC) { CBrush l_brush(RGB(0, 0, 255)); CBrush *old_brush = pDC->SelectObject(&l_brush); CRect rt; pDC->GetClipBox(&rt); //실제 갱신되는 영역을 구한다. pDC->PatBlt(rt.left, rt.top, rt.Width(), rt.Height(), PATCOPY); pDC->SelectObject(old_brush); return TRUE; } MFC는 메세지를 처리하기전에 SetClipBox를 해놓기 때문에 GetClipBox를 호출하여 갱신된 부분의 영역을 알 수 있다.
-
Document / View 구조 고려사항랭귀지/MFC 2008. 11. 20. 10:35
문서 / 뷰 구조를 이용하기 위한 조건 - 하나의 프레임, 문서 및 뷰는 반드시 서로 연결되어 있어야 한다. - 하나의 문서에는 여러 개의 뷰가 연결될 수 있다. - 하나의 문서에는 최소한 하나의 뷰가 연결되어야 한다. - 프레임, 문서 및 뷰 객체들은 상호간의 포인팅이 가능해야 한다. //////////////////////////////////////////////////// 뷰 클래스에서 문서 클래스 객체의 포인터 얻기 - CView클래스에 정의되어 있는 GetDocument함수를 이용한다. #ifndef _DEBUG // debug version in sam1View.cpp inline Csam1Doc* Csam1View::GetDocument() { return (Csam1Doc*)m_pDocu..
-
실행 도중 이미지가 출력이 안될 때! CreateDIBSection 함수랭귀지/API 2008. 11. 17. 12:36
보통 이미지를 불러올 때 CreateCompatibleBitmap 함수를 사용한다. CreateCompatibleBitmap 함수의 단점은 DC 의 크기가 16MB 로 제한되어 있다는 것이다. 이 문제점의 해결책은 CreateDIBSection 함수이다. HBITMAP MakeDIBSection(HDC hdc, int width, int height) { BITMAPINFO bmi; LPVOID pBits; HBITMAP hBitmap; memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biBitCount = 24; // 칼라수 : 1, 4, 8, ..
-
FPS 구하기 ( Frame Per Second )랭귀지/API 2008. 11. 17. 12:29
void Framework::UpdateFPS() { static DWORD FrameCnt = 0; static float TimeElapsed = 0; static DWORD lastTime = timeGetTime(); DWORD currTime = timeGetTime(); float timeDelta = (currTime - lastTime)*0.001f; FrameCnt++; TimeElapsed += timeDelta; if(TimeElapsed >= 1.0f) { m_fFPS = (float)FrameCnt / TimeElapsed; TimeElapsed = 0.0f; FrameCnt = 0; } lastTime = currTime; }