이론/DirectX 11

DirectX 11 2. Framwork Setting

월러비 2024. 9. 4. 13:54

사전 밑 준비

  • 생성된 프로젝트를 저장할 폴더 생성
  • DirectX 개발 키트 설치
    • 설치된 파일(Program(X86))에 들어간 파일 중 lib, include 를 주로 사용하게 된다.
    • 설치된 폴더들은 따로 빼서 작업중에 경로를 편하게 설정할 수 있는곳에 저장해놓아도 좋다.

프로젝트 생성

  • 프레임 워크 프로젝트 하나를 생성하고, 그 Library를 사용하는 UnitTest 프로젝트를 생성해서 한 솔루션에 2가지 프로젝트를 모아놓는 형식으로 작업을 진행한다.
  • 파일 - 새로 만들기 - 프로젝트
    • Visual C++ - Windows 데스크톱 - Windows 데스크톱 마법사 - 원하는 폴더 선택 - ‘솔루션용 디렉토리 만들기’ 체크 : 한 솔루션에 여러 프로젝트를 만드는데 도움을 주는 옵션이다. - 이름 지정
      • 주로 프로젝트 이름은 변경하지 않고, 솔루션이름을 바꾸게 된다.
    • 응용 프로그램 선택 : 정적 라이브러리 - 미리 컴파일된 헤더 : 체크 해제 (나중에 옵션으로 다시 킨다.) - SDL(보안 검사) 검사 체크 해제 (개인 프로젝트에서는 꺼도 되지만, 실무에서는 키고 사용해야한다.)
    • 프로젝트 생성이 끝나면 리소스 ‘ 소스 ‘ 헤더 폴더 삭제
    • Debug의 X86 상태에서 작업을 진행한다.
      • X86 클릭 - 구성 관리자 - 활성 솔루션 플랫폼 - X64 선택 후 삭제
        • X64 환경은 컴파일이 복잡해져서 사용하지 않는다.
    • 프로젝트에의 속성에서 바로 들어가면 C++ 항목이 생성되지 않으니 임시의 C++ 파일을 생성한 다음 진행한다.
      • 아무 이름이나 지정해서 C++ 파일 생성 - 프로젝트 우클릭 - 속성 → C / C++ 탭이 생성된다.
    • 응용 프로그램 종류
      • 동적 연결 라이브러리 (.dll) : 라이브러리가 필요할때 언제든지 동적으로 ‘링크’ 했다가 끊었다가 할 수 있는 파일이다.
        • 일반 게임에서 주로 사용하는 라이브러리다.
        • 개발자가 원할떄 불러오기 떄문에 메모리 관리가 복잡하지만, 원할때 언제든지 끊을 수 있으니 동적으로 사용하기 편하다.
      • 정적 라이브러리 (.lib) ; 프로그램을 실행할 때 모두 불러놓는 라이브러리다.
        • 메모리 관리가 단순한 대신, 연관된 모든 파일이 전부 들어와서 개발자가 원할때 해제가 불가능하다.
    • 동적 ‘ 정적 라이브러리 , 미리 컴파일된 헤더는 나중에 찾아서 정리한다.

프로젝트 생성 후 준비

사용할 기능들이 있는 DX 설치 폴더 경로 지정

  • include 폴더 경로 지정 방법
    1. 포함 디렉터리 클릭 - 주소 옆에 리스트 버튼 클릭 - 편집 - 포함 디렉토리 우측 폴더 추가 클릭 - 설치된 include 폴더 선택
      1. 직접 하는데 번거로움이 있다.
    2. 포함 디렉토리 - 우측 하단 MS에서 제공하는 매크로 버튼 클릭 - $(DXDSDK_DIR) 작성 후 \를 붙이고 경로를 작성한다.
      1. 반드시 DX를 설치한 경로를 지정해야하기 때문에 경로를 바꾼 경우 사용이 불가능하다.
    3. 설치를 옮긴 경로를 지정하는 ‘매크로’를 만든다
  • 보기 - 다른 창 - 속성 관리자 - Debug | Win32 - CPP Win32.user - 공용 속성 - 사용자 매크로
  • 매크로 추가 - 이름(헤더) : DH (DirectX Header) / 값 : include 폴더 경로 - ‘이 매크로를 빌드 환경의 환경 변수로 설정’ 체크
  • 매크로 추가 - 이름(헤더) : DL (DirectX Library) / 값 : lib 폴더 경로 - ‘이 매크로를 빌드 환경의 환경 변수로 설정’ 체크
  • 이제 DH , DL을 경로로 작성하면 해당 경로 폴더의 파일들을 사용할 수 있게 된다.
  • 프로젝트 속성 페이지 - 구성 속성 - VC++ 디렉터리 - 포함 디렉토리 - 뒤에 $(DH) 작성
    • 뒤에 작성하는 이유 : Window SDK에 이미 DirectX 기능이 있기 때문에 충돌이 일어난다.
    • 그렇기에, 앞의 window 경로에서는 ‘신버전’을 부르고, 뒤의 직접 설정한 경로에서는 ‘구버전’을 부른다.
  • 프로젝트 속성 페이지 - 구성 속성 - VC++ 디렉터리 - 라이브러리 디렉토리 - 뒤에 $(DL) 작성

라이브러리 폴더 생성

  • 프레임 워크나 프로젝트에서 사용할 라이브러리를 직접 생성할 수 있다.
  • 프레임 워크 폴더 2단계 위 폴더에 라이브러리를 저장할 폴더를 생성한다.
  • d3dx11effect.h / Effects11d.lib / Effects11d.pdb : 쉐이더 조작에 필요한 헤더다.
  • DirectXTex.h : DirectX MX에서 만든 텍스처 헤더다.
    • DX는 PNG나 JPG 파일만 부를 수 있지만, 나중에 여러가지 이미지 파일들을 사용할 수 있도록 해주는 라이브러리 파일이다.
  • ImGUI : 프레임 워크 실행시 사용할 UI 프레임 워크다.
  • 프로젝트 속성 페이지 - 구성 속성 - C/C++ - 추가 포함 디렉토리 - 라이브러리 폴더 경로 지정
    • 상대 경로 지정 방법 : ‘../’ 를 붙여서 경로를 작성한다.
      • 현재 프로젝트에서 상대적인 경로로 지정되기 때문에 프로젝트의 위치를 많이 바꾸지 않는 이상 경로를 새로 바꿔줄 필요가 없어진다.
    • ./;../../생성한 폴더 이름
      • ./ : 현재 폴더 내에 있는 폴더도 추가 포함하라는 의미이다.
      • ../../ : 현재 폴더에서 2단계 위에 있는 폴더를 의미한다.
  • 프로젝트 속성 페이지 - 구성 속성 - C/C++ - ‘다중 프로세서 컴파일’ 예 설정
    • 소스파일이 코어에 있는 만큼 한번에 컴파일되게 해주는 옵션이다.
    • 속도가 빨라진다.
  • 프로젝트 속성 페이지 - 구성 속성 - 코드 생성 - ‘최소 다시 빌드 가능’ 아니요 설정
    • 최소 다시 빌드 가능 ; 예 로 되어있으면 다중 프로세서 컴파일 기능이 작동하지 않는다.
  • 프로젝트 속성 페이지 - 구성 속성 - 언어 - ‘준수 모드’ 아니오 설정
    • 준수 모드 : MS 문법을 지키도록 하는 옵션이다.
  • 프로젝트 속성 페이지 - 구성 속성 - 미리 컴파일된 헤더 - ‘미리 컴파일된 헤더’ 사용 설정
    • 미리 컴파일된 헤더 파일 : 직접 생성한 Framework.h
      • 이것을 기본 헤더로 잡게되면 나중에 라이브러리나 UnitTest에서 사용하게 되는 기본 헤더의 이름과 같기 때문에 헷갈리지 않도록 바꿔주는 것이다.
  • 프로젝트 속성 페이지 - 구성 속성 - 라이브러리 관리자 - ‘추가 라이브러리 디렉토리’ : 직접 생성한 라이브러리 경로 지정
    • 이때는 프로젝트 폴더는 지정하지 않는다.

'이론 > DirectX 11' 카테고리의 다른 글

DirectX 11 3. UnitTest Setting  (0) 2024.09.06
DirectX 11 1. DirectX 설명  (3) 2024.09.03