d3dx 헤더는 무겁다.
현재 directx9로 프로젝트를 진행하고 있는데 directx9관련 <d3d9.h>와 <d3dx9.h> 헤더를 사용하고 있다.
이 둘의 차이는 무엇일까? d3d9는 directx9의 기본적인 기능을 담고 있고 d3dx9는 그것을 활용해 개발하는데 사용할 수 있도록 만든 범용적인 기능들의 집합이다. 하지만 지금은 d3dx 시리즈의 헤더 사용을 microsoft에서 권장하지 않는다.
왜냐하면 범용적인 기능들을 한번에 담은만큼 프로그램이 무거워지고 퍼포먼스가 느려지기 때문이다. 그래서 microsoft에서는 directx11 이후로 기능들을 세분화해서 기능별로 라이브러리를 제공하고 있다.
정적 라이브러리와 동적 라이브러리
| 정적 라이브러리 | 동적 라이브러리(DLL) |
| lib 파일 생성 | lib, dll 파일 생성 |
| 구현한 함수의 구현부를 exe에 함께 담는다 | 구현한 함수의 구현부를 dll에 담는다 dll파일의 어디를 호출해야 하는지 담긴 링커가 exe에 포함 |
| 함수 호출 속도 빠름 | 함수 호출 속도 느림 |
| 라이브러리 업데이트 시 exe파일이 새로 만들어져야 하기 때문에 전체 재빌드해야 함 | 라이브러리 업데이트 시 구현부만 바뀌었다면 dll만 교체하면 됨 |
| exe파일 커짐 | exe파일, dll파일 작음 |
| 다수 프로젝트에서 각 프로젝트에 메모리 할당 | 다수 프로젝트에서 각 프로젝트가 내용을 공유 |
사용자 정의 자료형
프로젝트에서 기본자료형을 typedef를 이용해 사용자 정의 자료형으로 정의할 때가 있다. 왜 그럴까?
운영체제 32비트, 64비트에 따라 자료형의 크기가 달라지는 자료형들이 있다. (long, pointer, size_t)
그럴 때는 운영체제에 따라 자료형을 바꿔줘야 하는데 이미 작성한 자료형들을 한땀 한땀 바꾸는 것은 쉬운 일이 아니다. 그래서 사용자 정의 자료형으로 정의해놓으면 한꺼번에 바꿔야 할 때 바꾸기 용이하다.
'Today I Learned' 카테고리의 다른 글
| 23. 05. 17 - 스레드 관련 함수 (0) | 2023.05.17 |
|---|---|
| 23. 05. 16 - Depth Buffer (0) | 2023.05.16 |
| 23. 05. 12 - CBase 클래스, 소멸자 vs 함수, 라이브러리 만들고 적용 (0) | 2023.05.12 |
| 23. 05. 11 - 프로젝트 파일 디렉터리 설정, 클래스 get/set 함수 지양 (0) | 2023.05.11 |
| 23.03.03 - 람다식, R-value Reference, 이동 생성자 (0) | 2023.03.03 |