DirectX11 이제 시작1: 환경 구축

8506 단어 DirectX11Direct3DC++
개시하다
외부 프로그램 라이브러리를 전혀 사용하지 않고 DirectX11의 3D 게임 개발을 목표로 합니다.
이 글은 작가가 DX11의'노트'를 이해하기 위한 것과 같다.하지만 다이렉트X11의 자료가 너무 적어 Qita에 그대로 투고했다.따라서 잘못된 정보를 기록할 수 있다.양찰하다.
"Unity 편하다! Blender 편하다! 굳이 Windows API를 두드릴 필요가 있나요?"이런 생각을 가진 사람은 이 기사를 읽지 말아야 하고,'DirectX11 따위는 식은 죽 먹기니 12편을 설명해 주세요'라고 생각하는 사람들도 읽지 말아야 한다.
"C++가 좋은 건 이해하지만 콘솔 애플리케이션만 만들 수 있다"거나 "저수준 게임을 개발하고 싶다"는 분들은 천천히 진행하세요.
이번 내용
환경을 구축한 후 신청 요점을 기술하다.
전체 코드는 다음과 같습니다.
Windows SDK
DirectX11 개발에 필요한 프로그램 라이브러리는 Windows 10이라면 표준으로 탑재되어야 한다.Programs Files(x86)의 Windows Kits 디렉토리에 있습니다.
예를 들어 10/Include/10.0.19041.0/um/및 d3d11을 예로 들 수 있습니다.h가 있는지 확인해 주세요.
Windows Kits가 없으면 아래에서 다운로드하십시오.
환경 구조
Visual Studio Community 같은 IDE는 사용되지 않습니다.
DirectX의 해설 기사 대부분은 Visual Studio Community를 가장 먼저 활용한 것입니다.그러나'무거운 것','자원 관리자와 동기화되지 않음','설정이 번거롭다'등 이유로 사용하기 어려워 사용하고 싶지 않다.그럼 어떡하지?
MSVC 컴파일러를 직접 실행합니다.
정확히 말하면 MSVC 컴파일러와 프로그램 라이브러리만 있으면 충분합니다. Visual Studio를 설치하면 완전히 일치합니다.
물론 Community를 설치해도 완벽하지만 IDE와 함께 제공되지 않는 Build Tools for Visual Studio입니다.다운로드 페이지는 다음과 같습니다.아래의 Visual Studio 2019 도구 에 나와 있습니다.
설치할 때 아래 항목만으로도 충분합니다.필요한 영역 합계는 0GB였지만 원래는 4BG 정도였다.

MSVC 컴파일러 cl.exe는 다음 디렉토리에 있습니다.또한 버전이 다르므로 주의하십시오.또한 Community를 사용하는 사람은 경로가 조금 다릅니다.
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\bin\Hostx86\x86\
구문 정보
빌드란 소스 코드를 실행 가능한 파일로 변환하는 작업이며 다음 절차가 있습니다.
  • 사전 처리: 사전 프로세서가 소스 코드의 헤더 매크로를 펼치거나 주석을 삭제하는 등
  • 컴파일러: 컴파일러가 원본 코드를 구성 요소로 변환
  • 어셈블리: 어셈블리를 중간 언어 파일로 변환
  • 링크: 링크: 링크 측이 중간 언어 파일과 결합하여 실행 가능한 파일을 생성
  • cl.exe는 C++로 작성된 원본 코드로 구축된 컨트롤러 응용 프로그램입니다.따라서 엄밀히 말하면cl.exe는 컴파일러가 아니라 컴파일러 드라이버이다.
    구축 방법
    한 마디로 하면 디렉터리 내의 모든 원본 코드를cl.exe에 건네주면 된다.이제 포함 경로와 라이브러리 경로를 설정합니다.따라서 다음과 같은 일괄 처리 파일을 제작하고 실행하는 것이 좋다.
    또한 판본의 차이에 주의하세요.
    build.bat
    @echo off
    setlocal enabledelayedexpansion
    
    set kCL="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\bin\Hostx86\x86\cl.exe"
    set kLIB="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\bin\Hostx86\x86\lib.exe"
    set kOptInclude=^
    /I "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\include" ^
    /I "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\VS\include" ^
    /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt" ^
    /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um" ^
    /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared" ^
    /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt" ^
    /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt"
    set kOptLibrary=/link ^
    /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\lib\x86" ^
    /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\VS\lib\x86" ^
    /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x86" ^
    /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86" ^
    /LIBPATH:"."
    
    set kDelimiter= 
    set pathFiles=
    if exist "..\src\*.cpp" (
        for /f "tokens=* delims=" %%x in ('dir ..\src\*.cpp /S /B') do (
            set pathFiles=!pathFiles!%%x!kDelimiter!
        )
    )
    
    if "!pathFiles!"=="" (
        echo There is no file that should be compiled.
        exit /B
    )
    
    !kCL! /EHsc /Fe:main.exe !kOptInclude! !pathFiles! !kOptLibrary!
    del *.obj
    
    또한 KDelimiter는 공간입니다.
    이 배치 파일은 다음과 같은 디렉토리 구성에 사용할 수 있습니다.build.bat를 실행한 후,main.exe를 실행하세요.
    .
    |--- build/
         |--- build.bat
         |--- main.exe (生成される)
    |
    |--- include/ (batには登場しない)
         |--- HeaderDX11.hpp
    |
    |--- src/ (ここにあるすべてcppファイルがコンパイルされる)
         |--- Main.cpp
    
    신청 요점
    윈도 API 사용에 더해 평소와 다른 신청지를 써야 한다.
    우선, 장래의 HeaderDX11을 똑바로 봐라.hpp의 눈썹을 하나 써라.지금은 창문입니다.h만 사용합니다.
    HeaderDX11.hpp
    #pragma once
    #ifndef _HEADER_HPP_
    #define _HEADER_HPP_
    
    #include <DirectXMath.h>
    #include <d3d11.h>
    #include <windows.h>
    #include <wrl/client.h>
    
    #pragma comment(lib, "user32.lib")
    #pragma comment(lib, "d3d11.lib")
    #pragma comment(lib, "dxgi.lib")
    
    using Microsoft::WRL::ComPtr;
    
    #endif
    
    그럼,Main.cpp라고 써.이것은 신청의 중점이다.
    Main.cpp
    #include "../include/HeaderDX11.hpp"
    
    int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPInst, LPSTR pCmd, int cmdShow) {
        return 0;
    }
    
    WINAPI는 OS가 임의로 호출하는 함수와 함께 호출 규약이라고 합니다.
    나는 명령행 파라미터가 익숙하지 않다고 생각하지만, 가장 많은 것은 첫 번째 파라미터와 네 번째 파라미터를 사용하는데, 각각 다음과 같은 의미가 있다.
  • 첫 번째 매개 변수: 실례 문장 손잡이라고 하는데 예를 들어 이 과정의 표지 번호
  • 네 번째 매개 변수: 어떻게 표시하는 초기 설정
  • build.bat main을 실행합니다.이엑스가 정상생이 되면 OK.
    그리고 실행해도 별일 없을 것이다.
    끝말
    특별히 할 말이 없다.
    다음에 창이 표시됩니다.다음 링크는 다음과 같습니다.

    좋은 웹페이지 즐겨찾기