Introduction to 3D Game Programming with DirectX 11 학습 노트 (2) D3DApp 클래스

D3DApp은 메인 창을 만들고 Direct3D 대상을 만들고 메인 순환 논리를 처리하는 프레임워크 클래스입니다.
원본 파일
${CODE}/d3dApp.h
${CODE}/d3dApp.cpp

유형 방법 상해HINSTANCE D3DApp::AppInst()
현재 적용된 실례 핸들을 되돌려줍니다.이 값은 D3DApp의 구조 함수에 전송되어 저장됩니다.일반적으로 유일한 D3DApp 실례를 만들 때 WinMain 함수의 hInstance을 전송한다.HWND D3DApp::MainWnd()
주 창의 핸들을 되돌려줍니다.주 창은 D3DApp::InitMainWindow 메서드에서 생성됩니다.float AspectRatio()
창 클라이언트 구역의 넓이와 높이를 되돌려줍니다.일반적으로 투영 행렬을 계산하는 데 쓰인다.bool D3DApp::InitMainWindow()
창 클래스, 등록 창 클래스를 정의하고 주 창을 만들고 표시합니다.bool D3DApp::InitDirect3D() Direct3DDevice, SwapChain을 작성하고 OnResize()을 호출하여 깊이 캐시(Depth Stencil Buffer)를 만들고 렌더링 목표(Render Target)를 설정하며 뷰포트(Viewport)를 설정합니다.void D3DApp::CalculateFrameStats()
주 창 제목 표시줄에 FPS과 프레임당 시간을 계산하고 표시합니다.bool Init()
프레임을 초기화합니다.InitMainWindowInitDirect3D 방법을 호출하다.LRESULT D3DApp::MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
창 메시지 처리 함수입니다.이 함수는 허함수로 하위 클래스에서 덮어쓸 수 있습니다.하위 클래스는 덮어쓴 후에 자신이 필요로 하는 메시지를 처리한 후 D3DApp::MsgProc 함수를 다시 호출하여 기본 클래스가 다른 메시지를 계속 처리하도록 해야 한다.void UpdateScene(float dt)
순허 함수는 하위 클래스에서 정의해야 합니다.매개변수는 장면의 변화를 계산하는 데 사용되는 두 프레임 사이의 시간 간격입니다.void DrawScene()
순허 함수는 하위 클래스에서 정의해야 합니다.Direct3D API를 호출하여 장면을 그립니다.void Run()
메시지 순환을 처리합니다.소식이 없을 때 타이머를 처리하고 UpdateScene 방법과 DrawScene 방법을 호출한다.타이머가 멈추면 0.1초 휴면합니다.기본적으로 주 창의 초점을 잃을 때 타이머가 정지됩니다.D3DApp()
주 창 제목, 창 클라이언트 크기, Direct3D 드라이브 유형 등 매개 변수를 초기화합니다.~D3DApp()
자원을 방출하는 것은 주로 Direct3D과 관련된 자원과 대상이다.
요점
창의 메시지 처리 함수입니다. 클래스의 구성원 함수가 될 수 없습니다.클래스의 구성원 함수는 this 바늘을 포함하기 때문에 창 메시지 처리 함수의 원형과 일치하지 않습니다.이 문제를 해결하기 위해 메인 창의 메시지 처리 함수인 전역 함수 MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)을 추가했습니다.이 함수는 유일한 D3DApp* gd3dApp 전역 지침을 통해 메시지 처리 함수의 매개 변수를 유일한 프레임워크 클래스에 전송하여 클래스의 구성원 함수를 통해 창 메시지 처리 함수를 실현하는 기능을 실현하였다.

좋은 웹페이지 즐겨찾기