전체 글64 4.6 Directx 응용 프로그램의 디버깅 & 요약 HRESULT 형식 의 오류 부호 리턴 이책의 예제들은 HRESULT 형식의 반환값을 점검 해서 점검 class DxException { public: DxException() = default; DxException(HRESULT hr, const std::wstring& functionName, const std::wstring& filename, int lineNumber); std::wstring ToString()const; HRESULT ErrorCode = S_OK; std::wstring FunctionName; std::wstring Filename; int LineNumber = -1; }; //매크로 구현 일반 함수 구현 시 오류 발생하면 일반 함수의 파일과 행이 출력 //에러 발생 .. 2023. 10. 22. 4.5 예제 프로그램 프레임 워크 클래스 소개 d3dutil.h, cpp : 유용한 편의용 코드 d3dapp.h, cpp : Directx 응용 프로그램을 캡슐화 하는데 쓰이는 핵심 응용 코드 프레임 워크 목적 : 창 생성 코드 와 Directx 초기화 소스를 숨기는 것 D3Dapp 클래스 : 응용 클래스 들의 기반 클래스(부모 클래스) 로 사용 기능 목록 : 주창 생성, 메시지 루프 실행, window 메시지 처리, directx 초기화 여섯 가상 함수를 제공 이 구조의 장점 : 초기화 및 메시지 처리는 D3Dapp 클래스에 구현, 파생 클래스는 필요한 구체적인 코드만 작성 할 수 있다. class D3DApp { protected: D3DApp(HINSTANCE hInstance); D3DApp(const D3DApp& rhs) = .. 2023. 10. 22. 4.4 시간 측정과 애니메이션 애니메이션 실행 시 정확한 동작을 위해서 프레임 간의 시간을 구해야 한다. 프레임 간의 경과 시(elapsed time) : 인접한 두 프레임 사이의 시간 Windows 에서 지원하는 성능 타이머 (performance counter) 사용 시간의 측정 단위는 “지나간 클럭 틱 tick ” 이라 한다. 초당 틱 수의 역수로 1틱 당 초수를 계산 하는 방식 //현재 시간을 64 비트 틱 형태로 반환 __int currTime; QueryPerformanceCounter((LARGE_INTEGER*)&currTime); //선능 타이머의 주파수(초당 틱 수) __int countsPerSec; QueryPerformanceFrequency((LARGE_INTEGER*) &countsPerSec); //틱수 .. 2023. 10. 22. 4.3 Direct 초기화 순서 초기화 순서 D3D12CreateDevice 함수로 ID3D12Device 생성 ID3D12Device 호출 실패 시 소프트웨어 디스플레이 어댑터 호출 HRESULT WInAPI D3D12CreateDevice( IUnknown* pAdapter, //디스플레이 어댑터, null 경우 기본 디스플레이 어댑터 D3D_FEATURE_LEVEL MinimumFeatureLevel, //최소 기능 수준, 디스플레이 어댑터의 수준 지원하지 않는 경우 실패 REFIID riid; void** ppDevice ); Directx 기능 지원 점검, 자원, 뷰 명령 목록 등의 다른 Directx3D 인터페이스 생성에 사용 그래픽 하드웨어 장치, 소프트웨어 디스플레이 어댑터(WARP 어댑터)도 존재 디버그층 활성화 #if.. 2023. 10. 22. 이전 1 ··· 11 12 13 14 15 16 다음