새소식

프로그래밍/DirectX

[DirectX] 000. DirectX 소개

  • -

!!! NOTICE !!!
이 글은 DirectX의 기본 이론 등을 다루고 있습니다!
학습한 정보를 제가 기억하고 추후에도 사용해두기 위해 기록해둔 내용입니다!
이 점 유의하고 봐주세요!


보통 프로그래밍으로 게임을 만든다고 하면
접근성이 좋은 게임 엔진인 유니티, 언리얼 엔진을 다룰 것입니다.

이번 카테고리에선 그런 게임엔진들의 기초가 되었던 프로그램 중 하나인
DirectX를 다뤄 볼 것입니다.
정확히는 DirectX 에서 제공하는 3D 그래픽 연산을 다룰 것입니다.

그전에 이 글에서 DirectX를 정의해보도록 하죠.


What is DirectX?

비주얼 스튜디오를 사용하는 프로그래머는
MS에서 제공하는 API를 이용하여 프로그램을 만듭니다.

이때, 프로그래머는 하드웨어에 직접 접근해서 연산을 처리하고 싶다면,
DirectX를 사용하여야 합니다.

이처럼, DirectX는 하드웨어에 직접적으로 접속(direct access)하여
하고자 하는 연산을 고속 처리할 수 있도록 MS가 제공하고 있는 API입니다.

API 에 대해서는 아래의 글을 참고해주세요.
https://onionisdelicious.tistory.com/38

 

[Programming] API 란 무엇인가?

What is API : Application Programming Interface ? 영문 중에서 인터페이스(Interface)라는 용어가 사용되었습니다. 먼저 이것에 대해서 알아보겠습니다. 인터페이스는 기계 장치끼리의 데이터 교환을 위해서 �

onionisdelicious.tistory.com

이때의 포인트는 하드웨어에 접근입니다.
왜 하드웨어에 접근하려고 DirectX를 사용하는 걸까요?
간단하게 접근이 불가한 걸까요?

 

초창기 컴퓨터에서는 Dos 환경에서 작동하고 있었습니다. CUI 시스템으로 말이죠.
Dos 환경에서 프로그램을 작동하면 프로그램이
대부분의 하드웨어 자원들(그래픽카드, 사운드카드 등)을 독점할 수 있었습니다.

win95가 출시되면서 CUI가 아닌 GUI 시스템으로 전환되고,
운영체제가 하드웨어 자원들을 항시 사용하게 되었습니다.
이때문에 프로그램에는 많은 제약이 발생했습니다.

멀티태스킹 환경의 win95에서는
프로그램이 사용중이던 자원을 운영체제가 달라고 요청하면 주어야 하고.
운영체제가 사용중이던 부분에 잘못 프로그램 할 경우엔 충돌을 일으켰습니다.

이것을 계기로 DirectX가 탄생하게 되었습니다.
프로그램이 하드웨어에 직접 접근이 가능하면서, 충돌을 야기하지 않도록 방지하여
쉽게 프로그래밍이 가능한 환경을 목적으로 DirectX는 출시되었습니다.

 

또 하나, 시스템의 호환성 목적도 존재합니다.

오늘날의 하드웨어만 보아도,
다양한 기업이 하드웨어를 판매하고 있는 걸 볼 수 있습니다.

똑같은 사양이라 할 지라도, 각각 다른 체계를 가지고 있기 때문에
똑같은 프로그램이 다른 체계를 전부 지원해야만 정상 작동이 가능했습니다.

반면, DirectX는 고유의 가상 환경에서 작동하는 체계를 가지고 있습니다.
가상 환경(Virtual Machine)은 실제론 존재하진 않지만, 가상으로 존재하고 있는 것처럼 만들어진 환경입니다.
때문에 DirectX로 만들어진 프로그램은 DirectX에서 제공하는 가상환경 이라는 고유의 환경이 존재하기 때문에,
다양한 하드웨어 에서도 똑같이 작동이 가능합니다.

이러한 이유 때문에 게임을 설치할 때마다 DirectX의 설치를 확인하는 것을 볼 수 있었습니다.

 

DirectX는 여러 하드웨어 자원들을 사용하기 위해서
각각의 역할을 구분지어 두었습니다.

대표적인 예로써,
사운드를 담당하는 DirectSound,
3D 그래픽을 담당하는 Direct3D,
2D 그래픽을 담당하는 DirectDraw,
입출력을 담당하는 DirectInput.

이 카테고리 에서는 Direct3D를 다뤄보려 합니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.