데스크톱 애플리케이션 생성
비주얼 스튜디오를 켜고 Windows 데스크톱 마법사로 만든다
추가 설정은 데스크톱 애플리케이션으로 한다
정적 라이브러리 추가하는 방법
새 프로젝트 추가 > 정적 라이브러리
라이브러리?
자주 사용되는 기능이나 함수 서브루틴 등 총제적으로 구현해 놓은 프로젝트
라이브러리의 종류와 장단점
- 동적 라이브러리
xxxx.dll
프로그램 시작하고 있는 동안에 해당 라이브러리를 참조하여 실행한다
하나의 메모리 영역에 올려두고 여러 프로그램들이 나누어 사용하는 라이브러리
장점
메모리 절약
프로그램 한번 올려진 메모리를 공유, 사용하니 사용 공간자체가 적다
업그레이드(패치)를 비교적 정적 라이브러리보다 쉽게 진행 가능하다
실행 중간에 패치가 가능
단점
외부의존도가 높아진다
(게임 포토샵 둘다 같은 그래픽스 API로 실행된다는 가정하에,
하나의 라이브러리로 같이 동적으로 사용하니 하나만 크래시가 나더라도 다 같이 크래시 날 수도 있음)
공유 라이브러리를 메모리 올리려면 찾고 검색하는데 시간이 걸리므로
성능저하가 발생한다
- 정적 라이브러리
xxxx.lib
프로그램 컴파일하는 과정에 내가 작성한 라이브러리 코드들이
포함된다
장점
한번 완성되면 안정적으로 프로그램 사용 가능하다
컴파일 시 필요한 라이브러리를 프로그램 내에 적재하기 때문에
앱을 안정적으로 활용할 수 있게 된다
런타임시 외부 참조할 필요가 없기에 속도에서 장점이 있다
단점
라이브러리 변경이 필요할 시 변경된 라이브러리를 재배포하면 안 되고
모든 프로그램을 처음부터 다시 빌드하여
새로운 버전으로 배포를 진행해줘야 한다
라이브러리 코드가 바뀌면 다시 빌드, 회사에서는 다시 배포를 해줘야 한다
추가적으로,
opengl은 버전 나올때마다 계속 라이브러리를 깔아야 하는데
dx는 pc에 알아서 깔려짐
동적 라이브러리에 대한 추가설명으로
게임과 포토샵에서 둘 다 opengl 라이브러리가 포함되어 있으면
굳이 둘다 돌릴필요가 없기에
하나로만 쓰고 상황에 따라 동적으로 작동하는 방식을 의미한다
자주 패치를 하거나 서버의 경우는 동적으로 쓰는 게 좋다
lib는 링크(linking) 시 필요하고 dll은 프로그램 실행 시 필요하다
동적라이브러리는 dll만 바꿔주면 되는데
정적라이브러리는 lib와 함께 통째로 바꿔줘야 한다
정적 라이브러리 프로젝트를 연결하는 방법
모든 구성, 모든 플랫폼으로 설정하기
미리 컴파일된 헤더도 제거하기
정적라이브러리 프로젝트는 실행하면 lib가 생성된다
정적라이브러리를 추가하는 방법
1. 소스코드로 추가하는 방식
2. 비주얼 스튜디오 속성 > 디렉터리에서
1번 방식으로 정적 라이브러리 추가는 아래와 같이 한다
#ifdef _DEBUG
#pragma comment(lib, "..\\x64\\Debug\\Engine_Source.lib")
#else
#pragma comment(lib, "..\\x64\\Release\\Engine_Source.lib")
#endif
정적 라이브러리 프로젝트 내부의 헤더파일을 Main 프로젝에 추가하는 방법
라이브러리 내부에 내가 만든 헤더를 아래처럼 직접 경로로 추가하면 불편하다
#include "..\\Engine_Source\CommonInclude.h"
그래서 참조 추가와 프로젝트 속성에서 C/C++ > 일반 > 추가 포함 디렉터리에 해당 경로를 설정한 후
아래처럼 사용하면 된다
#include "CommonInclude.h"
셰이더 코드를 프로젝트에 연결하는 방법
셰이더 코드라는 것도 필요하다
ex.
dx hlsl
opengl glsl
vulkan hlsl glsl
새 프로젝트 > 공유 항목 프로젝트로 설정한다
'그래픽스 > [기초] DirectX' 카테고리의 다른 글
[DirectX Note] 랜더링 파이프라인 (2) (0) | 2023.05.22 |
---|---|
[DirectX Note] 랜더링 파이프라인 (1) (1) | 2023.05.17 |
[DirectX Note] 그래픽스 공부 이유 (0) | 2023.05.17 |