Introduction to 3D Game Programming with DirectX 11 학습 노트 (2) D3DApp 클래스
2415 단어 directxgraphicsd3d11dragonbook
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()
Direct3D
의 Device
, SwapChain
을 작성하고 OnResize()
을 호출하여 깊이 캐시(Depth Stencil Buffer
)를 만들고 렌더링 목표(Render Target
)를 설정하며 뷰포트(Viewport
)를 설정합니다.void D3DApp::CalculateFrameStats()
주 창 제목 표시줄에
FPS
과 프레임당 시간을 계산하고 표시합니다.bool Init()
프레임을 초기화합니다.
InitMainWindow
과 InitDirect3D
방법을 호출하다.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
전역 지침을 통해 메시지 처리 함수의 매개 변수를 유일한 프레임워크 클래스에 전송하여 클래스의 구성원 함수를 통해 창 메시지 처리 함수를 실현하는 기능을 실현하였다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DirectX12의 Descriptor Heap, RootSignature 등 주변 필기'Descriptor Heap'이란'Descriptor'를 정리한 무더기를 말하는데, 이름에서 알 수 있듯이'Descriptor'가 무엇을 위해 준비했는지는 머리의 한 구석에 넣어야 한다. 우선, 메모리에 일부 계열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.