1. 안됩니다.
2. 어느 공부를 원하시는지 모르겠지만, 만약 기초적인 것을 먼처 배우는 것이라면 SDK에 포함되어 있는 Tutorial 이 최고죠 -ㅅ-;
2007.12.04 12:36:53 (*.93.126.159)
자갈공명
튜토리얼과 dx sdk도움말은 꽤 좋은 입문서입니다. 대부분의 D3D입문서들이 이 문서의 재편집 and 첨부 입니다.
엔진중에서라면 irrlicht( 이리힛, 일리힛 ), Ogre3D, 그리고 Geometric Tools ( Wild Magic, 3D Game Engine 책의 그것 ) 정도가 있겠네요..
2007.12.04 23:35:27 (*.152.36.196)
처음처럼
1. 컴파일 되지 않나요?
2. 1ststory님 의견에 매우 동감 ㅋㅋㅋ 튜토리얼이랑 샘플이 최고의 교제 중 하나죠.. ㅋ
2007.12.05 10:41:06 (*.54.151.101)
안군
근데, 최신 SDK는... 9.0 튜토리얼이 부실해서...
2007.12.06 01:20:55 (*.207.221.7)
1ststory
9.0에서 만든게 10.0에서 컴파일 된다고 보장도 힘들지요. SDK가 호환성이 있다고 하더라도, 그렇게 만들어진 exe파일이 9.0에서의 정상적인 동작을 한다고도 검증하기가 어렵습니다.
그렇기 때문에 차라리 안된다고 생각하는게 맘 편하죠.
게다가 10.0의 환경으로 9.0으로 개발은 어려운 얘기입니다. 9.0에서 지원하는 것이 무엇인지, 10.0에서 9.0에서 사용되지 않는 함수나 기타 사항들이 뭔지 정확히 알아야 합니다.
그렇기 때문에 9.0으로의 개발을 위해서는 9.0 SDK를 설치해야 하죠. 그래야 정상적인 동작을 100% 보장할 수 있게 됩니다.
단, 하위버전의 SDK로 만들어진 exe파일이 상위버전의 dx 런타임에서는 동작은 됩니다.
2007.12.06 12:07:56 (*.219.68.41)
msz006
이게 무슨 당황스러운 반응들이신지;;
10.0 SDK로 9.0 개발 당연히 가능합니다;; COM 개체의 특성을 잘못 이해하신게 아니라면, 당연히 되어야 함을 아실텐데요;;
단지 이전 버전으로 밀리면 문서가 부실해서 힘들다는거지, 인터페이스는 유지되니 개발은 되어야 정상이죠..
그렇지만 된다는것과 추천하는건 다르므로.. 9.0 개발을 하시려면 9.0SDK를 쓰시는게 좋겠죠..
2007.12.06 14:58:39 (*.252.51.246)
eRIKA
잘 모르면 아예 답변을 하지 않는게 자신과 남을 위해 좋은 .. 그런거겠지요. 어쨌든 msz006님 말씀이 정답입니다. 개발 잘 하고 있습니다.
2007.12.06 17:20:52 (*.152.36.196)
처음처럼
최신 DXSDK에 DX9 관련 내용 다 있어요;; 부실하다기 보다는 데이터 양이 많으니 찾기 어려울 수는 있겠네요..
10 환경에서 9 개발은 되지 않지요..
device를 얻을 때 10 device를 얻고 나면 dx9 함수는 호출이 되지 않겠지요.
DX10은 7부터 경험한 입장에서.. 가장 많은 변화가 있다고 느끼고 있습니다. (더 선배님들께서는 어떤 느낌이신지 모르겠네요 ^^;)
따라서 10 환경에서 9 개발은 불가능 합니다.
사실 어느순간부터 DXSDK가 9용, 10용으로 나오고 있지 않고, 그냥 나오고 있지요.
그냥 최신 버전 다운 받으셔서 사용해도 아무런 문제가 없고, 전 오히려 비추하지도 않고 싶습니다.
2007.12.06 21:28:04 (*.36.230.141)
1ststory
가능하다는 답변을 해주는게 더 당황스럽네요.
제가 위에다 달았지만, 차라리 10.0에서 9.0 개발을 생각한다면 버리세요. 만약 가능하다 할지라도 불가능하다고 결론을 내리세요.
자신이 서비스 하는 목적을 DirectX 9.0 이상으로 잡았다면 9.0 SDK를 깔으세요. 10.0으로 깔으신후 9.0에서 잘 될지 매번 체크하지 마시구요.
단순히 된다 안된다의 답변이 아니라, 그렇게 해서는 안되는겁니다. 제가 보기에는 가능하다고 얘기해 주는게, 왜 그렇다고 해주는지 이해가 안가네요.
결론적으로는 되겠죠. 만약 9.0의 방식을 따라서 9.0에서 제공하는 구성과 방식을(텍스쳐 설정이나 기타 등등) 사용하고, 9.0에서 제공되는 dll의 한도를 벗어나지 않는 이상요.
근데 그러면 차라리 9.0 SDK를 까는거하고 별반 다를거 없습니다. 그럼 차라리 9.0 SDK를 까세요.
제가 해주고자 하는 말은 이겁니다. COM특성이니 뭐니 따지지 마시고, 그냥 하지 마세요. 이건 불변의 진리입니다.
2007.12.07 00:05:49 (*.143.182.224)
eRIKA
어쨌든 잘 모르면 아예 답변을 하지 않는게 자신과 남을 위해 좋은 .. 그런 것인데요...
뭐 저도 잘 안다고 말할 수준은 아닙니다만... 추가로 적어보겠습니다..
> 자신이 서비스 하는 목적을 DirectX 9.0 이상으로 잡았다면 9.0 SDK를 깔으세요. 10.0으로 깔으신후 9.0에서 잘 될지 매번 체크하지 마시구요.
SDK 돌아가는 방식이 9.0, 10.0 이런 식으로 버전을 가르는 그런 종류도 아니고 따질 성격의 것이 아닌지라;
10.0이 포함된 최신SDK를 설치했어도 설치한 다음 9.0에서 통하는 방식으로 코딩했다면 당연히 체크 하지 않아도 9.0에서 돌아갈겁니다..
만약 1ststory님의 말씀대로라 큰 혼동이 있다면... MS도 배포할 때 9.0SDK, 10.0SDK 이런 식으로 분명히 구분지어 배포하는 걸 택했을텐데요..
말씀하신 것처럼 9.0SDK하고 10.0 SDK하고 따로 배포가 되고 있는 경우라면 당연히 SDK 설치할 때 잘 주의해야겠습니다만;
현재는 그런 형태로 배포되고 있지 않다는 점을 기억하신다면 좋겠습니다..(그런 의미에서 질문:9.0SDK는 뭐고 10.0SDK는뭔가여?)
아무튼 일례로 가장 최근 버전 2007겨울 버전 SDK를 보면 D3D8 이하 지원(샘플이나,도큐먼트 따위)이 삭제되고 D3D10 예제가 많아지긴 했지만, 여전히 D3D9에 대한 예제나 데이터가 확실히 남아 있습니다.. 지원 안끝났습니다..
그래서 시간나실 때 최신 버전 DXSDK 설치해시고 D3D9 프로그램 컴파일해보시면, 가능하다고, 해도 된다는 답변을 왜 다들 아무렇지 않게 하고 있는지 이해하실 수 있으실 것 같습니다..
> COM특성이니 뭐니 따지지 마시고, 그냥 하지 마세요. 이건 불변의 진리입니다.
나름의 신념이나 사상을 가지신다는 건 좋은 것이긴 합니다만, 그런 자신의 사상을... 불변의 진리...라고 남에게 강요까지 하시는건 좀 그렇네요..
현업에서도 최신 버전 깔아서 잘 개발하고 잘 돌리고 있다고 답변 드렸구요..;ㅠㅠ
뭐랄까 답변하신 걸 다시 보니 어쩐지 감정이 실리신것 같기도 해서(제가 좀 소심해서ㅠㅠ) 이 정도로만 적겠습니다..;
2007.12.07 01:10:31 (*.236.170.79)
1ststory
그럼 eRIKA님이 최신 버전의 SDK를 쓰고 계신다니 제가 몇가지 질문을 해보겠습니다.
2007 겨울 버전의 SDK를 설치하지 않아서 어떻게 변동되었는지를 확인해보지는 않았지만,
그렇다면, 새로운 기능의 함수나 새로운 버전의 dll 파일은 어떻게 처리되고 있는지요?
새로운 버전의 SDK라고 하더라도, 그 사이 10.0에서 새로이 추가된 개념이나 파일 변동 사항은 호환이 안된다는건 당연한 겁니다. 설마 자동으로 9.0으로 컨버전 해줍니다 라는 것도 아닐테고
설사, 일반 버전의 DirectX 예제 프로그램을 만들더라도, 9.0에서 호환있게 돌아가기 위해서는 분명 추가적인 지시사항이 있어야 합니다.
아무리 새롭게 나온 SDK가 전 버전에 호환이 있더라고 치더라도 컴파일 할때는 DirectX 라이브러리 사용이 DX9.0에 맞게 컴파일이 되어야 합니다.
그렇다면 새롭게 추가된 함수나 개념은 당연히 사용자의 DX9.0관련 dll에서 지원은 하지 않을텐데, 그럼 어떤 방식으로 이 문제를 새로운 버전의 SDK에서는 어떻게 처리한다는 것이죠?
참고로 예제 소스 제공과, 해당 버전의 전용 개발은 다른 문제입니다. 예제 소스를 제공하는 것이라고 하더라도 컴파일러에서 지정하고 있는 Include 및 Libary 의 적용 우선순위 위치가 최신 SDK의 include 폴더를 지정하고 있는 한, 컴파일러는 계속적으로 최신의 SDK 헤더및 라이브러리를 참고 하고 있습니다. 물론 프로젝트 옵션에서도 선택이 가능하지만, 이 폴더는 설치하는 순간 보통 컴파일러 옵션에 의해 자동적으로 지정됩니다.
2007.12.07 01:45:30 (*.236.170.79)
1ststory
또한 확인해 봤는데, eRIKA님이 말씀하신 2007년 겨울 버전 SDK가 2007 November 버전을 얘기하는 것 같은데,
이건 10.0 이라고 한다기 보다, 9.0c 버전의 업그레이드로 보이는데요.
무엇보다 이 버전은 런타임과 같이 제공중에 있습니다. 그럼 당연히 해당 버전의 SDK로 만들어진 프로그램을 사용자가 100%의 성능을 내기 위해서는 2007 November 버전의 런타임이 설치가 되어 있어야 한다는 겁니다. 지원되는 운영체제도 XP 포함 여러 운영체제에서 제공되어 지고 있습니다.
제공되어 지고 있는 2007 November의 런타임의 설명은 Update DirectX 9.0c and previous versions of DirectX—the core Windows technology that drives high-speed multimedia and games on your PC. 라고 되어 있구요.
제가 잘못 찾은건가요?
참고로 저도 현업이고, 제가 말한 불변의 진리는 제 신념도 사상도 아닌, 개발프로세스 중에 나중에 혼선을 적게 하기 위한 방법중에 하나입니다. 해당 버전의 서비스를 위해서는 반드시 해당 버전의 SDK로 개발하는 것이요.
이부분은 정확히 말씀해 주셔야 합니다. 만약 제가 생각하는게 잘못됬다면, 지금 지원이 끊긴 7.0SDK가 사람들 사이에서 돌아다니면서 2D 게임을 만들고 (참고로 최근에도 아마추어 사이에서 만들어지는 2D게임도 7.0 SDK로 만들어지고 있는 것도 몇개 있습니다. 7.0은 9.0에 비해 2D에 대한 개념이 쉽거든요) 있을 이유도 없고, 지금 November 버전이 나온이상 DirectX SDK - (December 2005) 버전의 SDK가 공식 마이크로소프트 홈페이지에서 다운로드를 계속 제공하는 것도 말이 안됩니다.
지금 이 논쟁은 앞으로도 혼선을 적게 하기 위해서 분명히 해야 할 것중에 하나입니다.
2007.12.07 09:58:50 (*.252.51.246)
eRIKA
> 해당 버전의 서비스를 위해서는 반드시 해당 버전의 SDK로 개발하는 것이요.
ㅇㅇ; 이 말씀이 틀린 것은 아닙니다.
그렇긴 한데 ... 7.0SDK의 예를 드셨지만; 말씀하신대로 7.0이 포함된 SDK를 공식적으로 제공하지 않게 된 건 '지원이 끊겨서'..잖아요? (8.0 버전도 최근에 그렇게 되었지만)
하지만 말씀하신대로...라면 10.0 SDK가 9.0SDK랑 따로 배포되고 있다는 의미가 되는데, D3D10의 가장 최근 버전이 담겨있기도 한 SDK 버전이 2007Nov'SDK'라는거; 일부러 모르시는 척하시는건 아니시죠? (2007Nov'런타임'에 9.0런타임만 들어 있고 10.0 관련해서 안들어 있는 것은 '당연한' 사안입니다. D3D10'런타임'이야 Vista 밑으로는 서포트할 이유가 없으니까, 저런 설치 형태가 아니라 보안 업데이트 같은 것들 마냥 별개의 패치 형태로 배포되고 있으니까요..)
어쨌든 원글에 대한 답변으로 돌아가면,
> 최신으로 받아서 dx 9.0 개발 가능 한지 문의 드립니다 ?
그래서 저는 '가능하고 별 문제 없다'라는 답변을 드렸습니다... 신념이고 사상이고 불변의 진리고 어쩌구 저쩌구 간에, '가능하냐'고 물어보셔서 '해서도 안된다', 도 '안된다', 도 답이 아닌지라, '된다'고 말씀드린 것 뿐인데 왜 그러시는지ㅠㅠ 그래서 최신 버전 깔아서 테스트는 해보셨는지 여쭤봤던 거고 말입니다.
..그런 의미에서 가장 첫 댓글로 다시 짤막한 두줄 답변은 좀 무책임하고 단정적인... 답변이 아닌가...하는 느낌을 받았습니다... 말씀대로 현업에서 일하고 계시는 거라면 좀 그렇네요...
뭐; 아무래도 저와는 상관 없고 다른 분들 역시 각자 알아서 판단해주시겠지만서도...
잘못했어요. 용서해주세요. 싸우고 싶지 않아요ㅠㅠ
2007.12.07 10:43:53 (*.36.230.141)
1ststory
싸운다기 보다
제가 잘 모르는 부분에 대해서 엉뚱한 답변을 하고 있었다면, 그걸 알려달라는 겁니다. -_-;
2007.12.07 10:57:20 (*.36.230.141)
1ststory
이와 관련해서 여러 다른 분들에게 물어보니깐, 9.0c 버전 이후에는 9.0 디바이스를 유지하고 있는 한 상위버전의 SDK로 하위버전의 지원도 상관 없다고 하는군요.
제가 잘못생각하고 있었군요. ㅇㅅㅇ
하여튼 질문하신 분 때문에 제가 놓치고 있었던 좋은거를 배우네요.
2007.12.07 10:58:05 (*.219.68.41)
msz006
간단히 정리하면, eRIKA님 말씀이 맞아요. 그냥 되는거라 되는거라고 답변드린건데 안되는게 불변의 진리라는 소리까지 나오니까 당황스러운거죠;;
최신 SDK를 받아서 개발해도 DX9 인터페이스로 개발하면 10에 추가된 기능에는 접근조차 불가능합니다. 그러니까 당연히 아무 문제가 없죠;;
이게 이해가 안되신다면 COM 아키텍쳐에 대한 개념이 없으신거라고 밖에 드릴 말씀이 없어요..
2007.12.07 11:48:54 (*.152.36.196)
처음처럼
워워워~
COM까지 이해해야 할 필요는 없는데요 ...
그냥 device 생성 할 때, 9용으로만 생성하면.. 10 함수는 쓸 수 없으니까요.
사실 9이랑 10은 구조가 넘 달라서리;;; 뭐 쓸 수 있다고 해도 ^^;;;
테스트도 문제 없어요.. 최신 SDK를 사용하면 그게 맞는 런타임도 반드시 써야 하는거니까.. 해당 환경에서 테스트 하면 뭐..
우리 좀 더 부드럽게 이야기 해 봐요
2007.12.08 15:09:08 (*.43.125.3)
Excelsis
전 9.0 프레임워크 프로젝트 만들때는 DirectX 샘플브라우저에서 EmptyProject설치해서 쓰고, 10.0용으로 만들때는 EmptyProject10으로 설치해서 씁니다
샘플브라우저 보면 전부 끝에 10붙은거 이외엔 전부 9.0c 용이라 걍 문제없이 잘돌아감
2007.12.08 18:31:31 (*.105.72.14)
임수한
원래 질문 했던 초보 입니다. 답변 감사합니다.
현재 비주얼 2008 팀 수잇 버전 설치하고, MSDN 도 비주얼 2008 용으로 설치 했습니다. (4기가 짜리 dvd 한장으로 모두 실치 했습니다 - 비주얼 베이직 등은 설치 안함)
dx sdk 만 설치하면 되는데, 고민 중이어서 조언 부탁 드려요 ^^
<1> 9.0 기능만 사용하고, 쉐이더는 3.0 까지 옵션에서 지원 가능하게 하려고 합니다.
디바이스 생성시에 9.0 을 생성하게 되므로 당연히 9.0 의 기능만 접근하고 사용하게 됩니다.
최신 sdk 설치하여도, 9.0 으로 디바이스 만들수도 있고, 10.0 으로 디바이스 만들수도 있을텐데
9.0 으로 디바이스 만들면.... 이전 sdk 설치한것과 동일하게 동작하는지 궁금 합니다.
<2> 최신 sdk 설치하면, 9.0 도움말이나 예제가 많이 줄어드는 지 궁금합니다.
도움말은 같을것 같고, 예제는 반정도 줄어드는 정도 인가요 ?
<3> 비주얼 2008 에서 sdk 작업시에 ... 최신 sdk 설치하는 것이 좋지 않을까요 ?
뭐든 최신 버전 설치하는 것이 좋지 않을까 궁급 합니다 ?
<5> 제 희망 사항은 ... 가능하면 개발툴도 최신버전 ... sdk 도 최신 버전 깔고 ..... 예제나 도움말은 추가로 따로 구하고...
그사항에서 개발시에 .... 예전 sdk 깐것과 ... 최신 sdk 깐것이 차이가 없는것을 희망 합니다....
9.0 개발에 맥시멈 쉐이더 3.0 까지 ... 지원 스펙 입니다....
* GeForce 7900 GS 변종 1.2ns 256bit 메모리 버스 코어540Mhz 메모리 750(1500)Mhz (20% 정도 더 오버 클락 가능 할듯 ..... 이미 변종이라 순정에서 더 오버된 스펙...)
(A)크라이시스 하이옵션 AA끄고 1024x768 에서 게임 무지 원할함.....
(B) 베리 하이 패치 하고, 하이 옵션 키면.... 버벅거려도 할만함..... (그래픽 큰차이 없음)
A 케이스인 경우에도 본것중에서 제일 훌륭한 비주얼을 보여 주는 게임 인데다가, 제꺼가 변종이라서 그런지... 퀘적하게 게임 되더군요....
크라이시스에 워낙 나무와 풀이 많이 나와서 ... 놀랍다 라는 이야기를 들은 적이 있는데
최근에 나온 fps 퍼씨픽 히로우즈 ?? 같은 게임도 나무와 풀이 엄청 화면에 많이 나옵니다..... 크라이시 쪽이 많이 나오면서도 퀄리티가 더 좋더라구요...
9.0 기반으로 쉐이더 3.0 지원하게 만들어도 사람들 입 떡 벌어지는 퀼리티가 되는 하드웨어 라고 봅니다.
AA 끄고, 1024x768 해상도 스펙으로 만들려고 합니다.
모니터 고해상도 지원하게 되면... 텍스쳐도 큰거 써야 하고...
크라이시 같은 대작 게임이 있어서 .... 나름대로 참고 해서 목표 스펙을 정해 보았습니다.
<1> 해상도 1024x768 ..... (요즘은 저해상도라고 생각되어 지는.....)
<2> AA 끄기 (끈 상태에서도 이쁜 비주얼이 목표)
<3> 쉐이더 3.0 지원 (3.0 으로 프로그래밍 할수 있다는 것만으로도 행복 ^^ 모든 피씨방이 더 높은 사양의 컴터 사용하기를 ^^)
<4> 360 패드 (크라이시스 360 패드 1.1 드라이버 깔고 하면 .... 진동도 지원 됨 ... 오 마이 갓 !!!!!)
*조언 부탁 드려요 ^^
2007.12.08 21:59:52 (*.43.125.3)
Excelsis
걍 최신SDK 하나만 까시면 됩니다
그리고 구버전 SDK 문서 삭제되는 건 없는걸로 알고있습니다. 저 지금 깔아놓고 쓰는 환경이 DX10 통합된 SDK 인데 9.0문서가 부족해져서 답답한 경우는 한번도 없었습니다
예제도 마찬가지;; 딱히 중요한 게 지워진거 못본거같습니다.
셰이더 3.0 지원 제한을 둘 때는 C++ 코드상에서는 Caps 체크(이 카드에서 SM3.0 지원하는지 확인) 만 하면 되구요, 실제로 HLSL 코드에서 3.0 스펙에서 받쳐주는 HLSL 코드로 코딩하시면 됩니다
그리고 어짜피 셰이더 코드상에 요 부분
VertexShader = compile vs_3_0 Func_VS();
PixelShader = compile ps_3_0 Func_PS();
여기서 위에 적은것처럼 3_0 으로 적어주시고 fxcomposer 이나 렌더몽키에서 컴파일해보시면 스펙안맞으면 에러 토합니다. 걱정말고 코딩하시길
2007.12.10 09:29:21 (*.152.36.196)
처음처럼
DXSDK 최신 버전에 포함되어 있고 MS에서 배포하는 최신의 DX9용 run-time이 타겟 PC에 설치되어 있어야 한다는 제한이 있겠네요.
DX9 기준으로 별로 바뀐건 없어보이긴 하는데.. 뭔가 몰래 바뀌었을지도.. ^^;
DX10 이 DX9 에 비해서 발전한 부분들은
다른 사람들 의견이랑 달리 제 의견은.. "CPU의 작업을 GPU로 옮기기 더 용이해졌다" 입니다. (뭐 제 의견이라 이거죠 정답은 아닐 수 있습니다ㅋㅋㅋ)
대강 DX10에서만 가능하다고 하는 것들.. CPU의 도움을 받으면 DX9에서도 거의 다 가능합니다. (뭐 당연하겠지만 말입니다.)
결국 CPU는 바쁘고, GPU는 널널한 상황이 덜 나오게 하는 것이 DX10을 사용하면서 얻는 이득이 아닐까 합니다.
타겟 사양에 대해서는.. 뭐라 말씀을 못 드리는게.. 언제 출시인지..
상용 소프트웨어인지, 그렇다면 마케팅에서 Geforce 6,7 시리즈 이상의 그래픽 카드를 최소 사양으로 해도 되는건지 등등
고려할 상황이 많지 않을까요? ^^;;
2. 어느 공부를 원하시는지 모르겠지만, 만약 기초적인 것을 먼처 배우는 것이라면 SDK에 포함되어 있는 Tutorial 이 최고죠 -ㅅ-;