3D 프로그래밍을 위한 위밍업 :: DirectX API 관하여.

프로그래밍/3D프로그래밍 2006/06/23 22:06
3D 프로그래밍을 위한 위밍업 :: DirectX API 관하여.
                                      2006년 6월 23일 by xevious7 http://www.xevious7.com

무엇인가 좀 그럴싸한 것을 만들려고 한다면 라이브러리를 사용해야 합니다.
요즈음 라이브러리라는 용어보다는 API(Application Program Interface) 라는
말을 더 많이 사용합니다.

10여년 전에 R모군 이라는 지인이 하이텔 채팅창에서 조심스럽게 첫번째
물어본말을 아직도 기억에 남아 있습니다.

"저기 프로그래밍을 시작하려고 하는데요...
한가지 꼭 물어보고 싶은게..  "

"말씀하시죠.."

"저기 API가 무엇이죠?"

"....."

10여년 전에도 비슷하게 설명한 것 같습니다만 그 당시 제말을 듣고 과연 얼마나
R모군이 이해를 했는지는 R모군도 기억을 못하기 때문에 알수가 없습니다.

어찌되었든 프로그래밍을 하는데 API는 하나의 도구 입니다.
API는 프로그램을 쉽게하기 위해서 만들어놓은 프로그램모듈입니다. 소스형태가
아닌 각각의 언어에서 참조하여 또는 호출하여 쓰여지는 미리 정의된 기능을
하는 함수입니다. API라는 말을 사용하기 이전에는 라이브러리 라는 말을 썼습니다.
정확히 말해서 라이브러리는 라는 말은 복수를 말합니다. 즉 어떤 기능을
하는 함수들의 집합을 말하는 것입니다.  math library 라고 한다면 수학에 관련된
함수들의 집합을 말하는 것입니다.

왜 이런것들이 필요한가? 그것은 대부분 언어가 언어자체에서 지원하는 함수들은 대부분 꼭 필요한 부분의 최소의 집합을 가지고 있기 때문입니다.

따라서 그것을 벗어난 기능을 수행하려면 외부적인 다른 요소들을 공부해서
자신이 언어가 가지고 있는 문법으로 함수들을 만들던지 아니면 누군가가 만들어서
제공하는 인터페이스를 사용하면 됩니다.

API라는 말을 누가 처음 섰는지는 모르겠습니다. 어찌되었든 상당히 잘 만들어진
용어라는 생각이 듭니다. 좀더 개념적으로 라이브러리라는 말보다 더 정확한 말이기
때문입니다.

어떤 언어를 사용하여 무언가의 목적에 맞는 프로그램을  응용 프로그램(Applicaton ,
Application program) 이라고 합니다.
이런 응용프로그램을 작성할때 예를들어 MS원도우즈를 쓰는 컴퓨터에서
하나의 윈도우를 생성하고 화면에 자신의 이름을 출력하는 프로그램을 작성한다고
합시다.

순수한 C와 C++ 언어만으로 이것을 작성한다고 생각했을때 여러분은 무엇을해야
할까요. 윈도우즈생성하고 화면에 뿌리고 메시지를 처리하기 위해서
원도우즈 운영체제에 대한 거의 모든것을 다 공부해야 할것입니다. ㅠ.ㅠ

하지만 원도우즈 운영체제에 쉽게 접근할수 있도록 즉 인터페이싱 해주는 미리
정의된 기능을 하는 Win32 API 를 사용하면  몇몇의 함수만으로 위의 프로그램을
작성할 수 있는 것입니다. CreateWindow 같은 함수말입니다. 이런것을 API라고
부릅니다.

정리해보면

우리가 API를 쓰는 목적은 개발기간을 단축하고 효율적이고 통일적인 프로그램을
하기 위해서 입니다. API는 도구입니다
. 따라서 시간에 따라 계속적으로 변합니다.
프로그램은 문제해결에 더 가깝습니다. 그 문제를 해결하기 위해서 최선의 방법을
선택하는 것입니다. API를 쓰는것도 그런 이유죠  API가 방대해지고 어려워지고
강력해지다 보니 API를 잘 사용하는 것도 상당히 중요해지고 있습니다.
그렇지만 API는 도구이기 때문에  역시 프로그래밍 파워는 문제해결에 대한
고민과 연습 그리고 문제해결에 관련된 것들을  공부하는 것도 매우 중요하다고
생각됩니다.

어찌되었든 프로그램을 작성하기 위해서 어떤 API를 선택했다면 그 API에 대해서
사용하는 법을 최대한 잘 알아야 좋은 프로그램을 할 수 있습니다.
보통 API를 제공하는 측에서는 API에 대한 모든 다큐먼트를 제공합니다.
API를 종류와 각각의 함수의 사용법 그리고 예제들이 존재합니다.

그러한 것들을 시간을 내어서 공부를 해야 겠지요. API의 한가지 문제점이 있습니다.
API가 도구이기 때문에 시간이 흐르면 새로운 API 또는 향상된 API가 나온다는
것입니다. 그래서 변화된 환경에 최적을 찾기 위해서 새로 등장하는 API를 계속
공부해야 된다는 것이지요. 이런것을 생각해본다면 API는 그때 그때 필요에
따라서 계속 사용법을 알아가는 도구이기 때문에 본질적인 부분 즉 원하는
프로그램의 저층에 깔린 기본원리를 튼튼히 하는 연습이 보다 더 중요한것 같습니다.

어찌되었든 DirectX API는 윈도즈 플램폼에서 3D 프로그래밍을 하기 위해서
사용하기 좋은 API인 것 같습니다.  DirectX API는 3버젼 부터 꾸준히 접해왔던
API였지만  크고 작은 변화를 통해서 과거의 API와 현재의 API는 아주 다른
형태가 되었습니다. 특히 DirectX 7 과 DirectX 9 은 기본적으로 Graphic 쪽에서는
전혀 다른 API라고 봐야됩니다.  2D와 3D의 차이라고 할까요 ~.
DirectX 9에서는 2D API가 없습니다. DirectX 7 과 가장 큰 차이는 이것입니다.
따라서 사실상 2D게임은 DirectX 7 으로 만드는것이 훨씬 좋다는 사람도 많이
있습니다.

3D프로그래밍을 위해서 DirectX 9 API를 공부하는 것은 중요한 위밍업인것 같습니다.

PS.  Graphics 쪽이 아닌 부분 Sound , Input 부분은 과거 API와 큰
차이가 없습니다.
PS. API ,라이브러리에 대한 다른글
http://www.xevious7.com/40 프로그래밍 언어와 라이브러리
top

Trackback Address :: http://xevious7.com/trackback/91

Write a comment