다이렉트X는 게임 개발을 위해 마이크로 소프트에서 하드웨어를 통제하기위한 라이브러리를 묶어놓은것입니다.
화면, 조작, 소리, 통신등을 하드웨어에 구애받지 않고 손쉽게(?) 접근할수 있도록 도와주는 역할을 해주죠.
말하자면, 게임개발을 위한 일종의 툴이라고 볼수 있습니다.
물론, 제대로 된 게임을 만들기위해서는 직접 구현해야 하는 부분도 있지만, 대부분의 연산을 대행해줌으로써 많은 효과를 구현할수 있습니다.
API는 Windows 어플리케이션을 만들기위해 윈도우상에서의 여러 기능(윈도우창에 관한부분, 데이터 처리, 입/출력처리)들을 라이브러리화 시켜놓은것입니다.
이것은, 윈도우를 기반으로한 소프트웨어를 개발하기위한것으로써 데이터처리나 인터페이스에 집중되어있고, 화면출력이라던지 비쥬얼적으로 뭔가를 보여주기에는 능력이 부족합니다.
간단하게 번쩍이는 빛의 효과를 위해 컬러계산을 하더라도 다이렉트X에서는 기본으로 제공되는 옵션을 설정해서 그려주기만 하면 되지만, API라는 라이브러리엔 그런 기능이 없기때문에
직접 계산하는 공식을 세워 픽셀단위의 연산을 해줘야 합니다. 또한, 다이렉트X에서는 연산부터 그려주는것까지 하드웨어(그래픽카드)를 이용할수 있지만, API에서는 소프트웨어적으로 연산 처리하고
그려주는것만 하드웨어를 이용합니다. 속도상의 차이가 생기겠죠.
물론, 윈도우상에서 돌아가는 게임의 경우 API를 무시할순 없지만(게임을 위한 윈도우를 생성해야 하므로), 다이렉트X의 기능들을 사용하지 않고 제작하기엔
커다란 어려움과, 시간적인 소요가 크다고 생각합니다.
어떠한 2D게임을 제작하시는지 모르겠으나, 단순한 그림의 나열이라면 API로도 충분할테고, 좀더 복잡한 효과를 원한다면 다이렉트X를 공부해보시길 권해드립니다.
2007.07.16 12:48:39 (*.93.126.159)
자갈공명
가장 큰 차이는 속도입니다..많이 차이 납니다..
사운드, 인풋( 키보드, 조이스틱 등 )을 제외하고 화면출력만비교하면 DirectX쪽이 훨씬 빠릅니다.
반면 API의 장점이라면 사양을 덜 탄다는것...간단한 보드게임류라면 API도 나쁘지 않습니다.
특히 2D게임이라면 이런 화면출력관련부분은 전체코드의 1-20%정도이고 나머지는 API로 하던 DirectX로 하던 비슷비슷합니다. ( 3D라면 비율은 좀더 높아집니다.. )
경험삼아 한다면 API도 나쁘지는 않습니다만 둘중 하나만을 해야한다면..( 시간등의 이유로 ) DirectX로 하시길 권합니다.
2007.07.16 15:41:59 (*.148.190.135)
비밀
API를 쓴다함은 그래픽을 GPU가 아닌 CPU 가 처리를 한다는것입니다. (그래픽카드를 아무리 좋은걸 써도 그래픽카드는 단지 다 처리된 결과만을 뿌려주는 역할만 할뿐). CPU 성능이 더욱좌우되고요..
게다가 또한 그래픽 API 인 GDI 또한 그닥 빠른 API 가 아닙니다. 큰 그림 애니메이션할 경우의 속도는 현재로썬 얼마나 나올지는 가늠하기 힘들지만(요새 CPU성능이 워낙좋아서리..) 그런그림에 몇장만 뿌려져도 끊기는걸 느낄지도 모릅니다.
API로 알파블렌딩 같은 이미지효과역시 CPU로 하신다면 스피드감있는 게임은 포기하심이..
뭐 대략.. 한화면에 이미지 한 3-40 장정도로 커버되는 게임이다 싶으면 GDI 로 해도 요즘은 그닥 상관이 없을지도 모르긴하겠네요
2007.07.16 17:20:42 (*.180.229.50)
msz006
목적에 따라 다르겠지만, 최근의 그래픽 카드는 GDI도 상당히 빠릅니다. 제대로 더블버퍼링만 구현했다면 2D 게임에서는 굳이 DX를 쓸 필요가 없어요..
만드시려는 게임이 전화면에 엄청난 탄막이 뿌려지는 슈팅이 아니라면 GDI로 만드시는 것에 강추입니다..
2007.07.17 14:13:14 (*.130.120.152)
기영
msz006님 말도 옳습니다. 최근 남아도는 CPU성능은 GDI를 처리하기에 부족함이 없죠. 하지만 요즘 2D 게임도 알파 블렌딩, 이미지 프로세싱(반전, 회전, 확대, 축소등), 파티클 이펙트 등을 쓰니
DX가 필요없다는 말은 좀 무리가 있을듯 하네요 :-)
여튼 편하기는 DirectX가 더 편합니다만, 아직 공부중이시라면 DX에 익숙해지시기 전에 GDI를 한번 사용해 보시는 것도 좋은 경험이 될 것이라 봅니다. 더블 버퍼같은 고전이지만 필수개념도 잡을수도 있구요.
윈도우의 메시지 구조도(이벤트 드리븐이라고 하나요? 제가 컴맹이라 잘...) 파악이 쉽습니다.
2007.07.17 23:55:00 (*.42.151.110)
얼음꽃
DirectX9.0부턴 Draw(2D)와 3D가 통합되는데
2D와 3D 라이브러리가 통합되기 때문에 속도면에서는 보통의 생각과는 반대로 3D가 2D를 그리는데 훨씬 빠릅니다.
결론 API >>>>>>>> 넘을 수 없는 4차원의 벽 >>>>>>>> Direct Draw >>>>>>> Direct 3D
간단한 그래픽 효과를 넣는것도 Direct 쪽이 편리하므로 실력의 향상까지 생각한다면 Direct로 가심이 좋아보입니다.
화면, 조작, 소리, 통신등을 하드웨어에 구애받지 않고 손쉽게(?) 접근할수 있도록 도와주는 역할을 해주죠.
말하자면, 게임개발을 위한 일종의 툴이라고 볼수 있습니다.
물론, 제대로 된 게임을 만들기위해서는 직접 구현해야 하는 부분도 있지만, 대부분의 연산을 대행해줌으로써 많은 효과를 구현할수 있습니다.
API는 Windows 어플리케이션을 만들기위해 윈도우상에서의 여러 기능(윈도우창에 관한부분, 데이터 처리, 입/출력처리)들을 라이브러리화 시켜놓은것입니다.
이것은, 윈도우를 기반으로한 소프트웨어를 개발하기위한것으로써 데이터처리나 인터페이스에 집중되어있고, 화면출력이라던지 비쥬얼적으로 뭔가를 보여주기에는 능력이 부족합니다.
간단하게 번쩍이는 빛의 효과를 위해 컬러계산을 하더라도 다이렉트X에서는 기본으로 제공되는 옵션을 설정해서 그려주기만 하면 되지만, API라는 라이브러리엔 그런 기능이 없기때문에
직접 계산하는 공식을 세워 픽셀단위의 연산을 해줘야 합니다. 또한, 다이렉트X에서는 연산부터 그려주는것까지 하드웨어(그래픽카드)를 이용할수 있지만, API에서는 소프트웨어적으로 연산 처리하고
그려주는것만 하드웨어를 이용합니다. 속도상의 차이가 생기겠죠.
물론, 윈도우상에서 돌아가는 게임의 경우 API를 무시할순 없지만(게임을 위한 윈도우를 생성해야 하므로), 다이렉트X의 기능들을 사용하지 않고 제작하기엔
커다란 어려움과, 시간적인 소요가 크다고 생각합니다.
어떠한 2D게임을 제작하시는지 모르겠으나, 단순한 그림의 나열이라면 API로도 충분할테고, 좀더 복잡한 효과를 원한다면 다이렉트X를 공부해보시길 권해드립니다.