Direct3D 9, 10 또는 11을 배워야합니까? [닫은]


14

Direct3D로 3D 프로그래밍을 시작했습니다. 어떤 버전의 D3D를 선택해야합니까?

11은 꽤 깔끔해 보이지만 9와 10은 여전히 ​​꽤 존재하는 것 같습니다. 게임 개발 산업의 현재 상태를 고려할 때 어떤 버전을 사용하는 것이 더 합리적입니까?


"사용할 기술"질문은 좋은 Q / A 질문이 아닙니다.
MichaelHouse

답변:


12

3 년, 1 년 또는 6 개월 내에 게임을 제작할 엔진을 설계할지 여부와 콘솔 포트를 생각하는지 여부에 따라 다릅니다. Direct3D9에서 게임의 360 포트를 버리는 것이 상대적으로 쉽지만 D3D11에서 훨씬 더 많은 작업을 수행해야합니다. 모든 D3D9 하드웨어 일 필요는 없지만 D3D11은 모든 XP 사용자를 잠그는 것을 기억하십시오.

가장 최근의 Steam 설문 조사에 따르면 약 16 %의 사람들이 여전히 Windows XP를 사용하고 있습니다. 당신은 그들을 잘라 여유가 있습니까? 게임이 완료 될 때 어떻게 바뀌 었습니까? 더 높은 수준의 API에 의존하는 기능을 사용 하시겠습니까? 이들은 스스로 대답해야하는 질문입니다.

Direct3D 9는 접근하기가 매우 쉽고 D3D9 게임을 통해 많은 사람들에게 다가 갈 수 있지만 요즘은 특히 PC에서 번호가 매겨져 있습니다. 그 사람들을 타겟팅하는 데 관심이 없다면, 그 점을 거의 지적하지 않아도됩니다.

아, 그리고 DX10을 귀찮게하지 마십시오. DX11 이상으로 사용할 이유가 없습니다. 무리하지 않는 D2D / DirectWrite를 사용하지 않으려는 경우.

물론 DX11에는 취미로 DX9에서 매우 유용한 클래스를 대체 할 수는 없습니다. ID3DXMesh, ID3DXSprite, ID3DXFont와 같은 소스에서 ID3DXEffect를 컴파일해야합니다. Microsoft는 ID3DXFont를 대체하기 위해 DirectWrite를 권장하지만 물론 실제로 DX11이 새로운 Direct2D / DirectWrite 시스템과 호환되는 것을 잊어 버렸습니다. .


왜 효과 프레임 워크를 제거 했습니까? 매우 유용한 클래스 IMO였습니다.
dotminic

__dominic : 제거되지 않았지만 직접 컴파일해야합니다.
DeadMG

1
__dominic : DeadMG가 지적했듯이 효과 프레임 워크는 제거되지 않았으며 직접 컴파일 할 수있는 독립 실행 형 코드 파일 세트로 간주되었습니다. 쉬운 배포 문제 (특히 D3DX 관련)

1
XP 사용자의 25 %를 잘라내는 것보다 더 나쁜 것은 17 %만이 DX11 GPU를 가지고 있다는 것입니다 (현재).
DMan

2
@DMan : D3D11은 D3D9 하드웨어를 포함한 하위 하드웨어에서 실행될 수 있습니다.
DeadMG

9

tldr : D3D11을 배우십시오.

API의 모양면에서 10과 11의 차이는 매우 작습니다. D3D11을 사용하면 다운 레벨링을 사용하여 D3D9 클래스 하드웨어로 다시 실행되는 D3D11 API에 대한 코드를 작성할 수 있습니다 (그러나 Vista 이상이 여전히 필요합니다). 따라서 새로운 API를 배울 수 있습니다. 어쨌든 깨끗하고 균일합니다.

그러나 Vista 이상이 없거나 XP에서 자신의 코드가 실행되도록하려면 (예 : XP 사용자에게 게임을 배포하기 위해) D3D9를 사용해야합니다. XP 시장은 아마도 축소되고 있기 때문에 가능하다면 11로 가라고 말하고 싶습니다.


3

3D 프로그래밍에 익숙하지 않고, 특히 COM 및 Windows 프로그래밍에 익숙하지 않다면 지금 DirectX를 배우지 말 것을 강력히 권합니다. 필자의 경험에 따르면 DirectX는 매우 강력한 도구이지만 Windows 프로그래밍, 3D 프로그래밍 및 기타 여러 가지 학습 곡선 외에도 고려해야 할 매우 가파른 학습 곡선이 있습니다. DirectX로 시작하면 상용구 코드 작성에 대한 모든 세부 사항에 압도 감을 느낄 수 있으므로 이에 대해 조언합니다.

대신 3D 프로그래밍에 대한 학습에 더 집중할 수있는 더 간단한 API를 추천합니다. XNA는 꽤 훌륭하며 DirectX 위에 있기 때문에 DirectX로 이동하면 DirectX 학습 곡선을 훨씬 쉽게 활용할 수있는 몇 가지 아이디어가 있습니다.

이제 OpenGL과 같은 3D 프로그래밍 경험이 있고 COM 프로그래밍 방법을 알고 있다면 DirectX 11을 권장합니다. 최신 버전을 제외한 모든 것이 더 이상 사용되지 않으며 경험이 있으면 도움이 될 것입니다. 더 짧은 시간.

그러나 다시 한 번, 실제 경험은 다양하므로 DirectX와 OpenGL, 그리고 원하는 경우 XNA 및 가능한 한 많은 API를 배우는 것이 좋습니다. 이렇게하면 3D 프로그래밍이 다른 도구와 어떻게 작동하는지에 대한 추상 지식을 갖게되며 각 작업에 적합한 도구를 사용할 수 있습니다.


2

DX11 또는 DX10을 권장합니다. 그 차이는 매우 작습니다. DX11로 더 많은 작업을 수행 할 수 있습니다 (hw 테셀레이션, 더 나은 gpgpu, 픽셀 셰이더의 여러 텍스처로 출력). DirectX 9에는 다른 아키텍처가 있으며 현재 거의 구식이 아닙니다. 현재 게임 개발 산업에 대해 묻는다면 현재 개발 된 PC 게임은 DX9로 죽었습니다.

그러나 나는 말해야합니다 :
api대해 신경 쓰지 마십시오 . 그래픽이 어떻게 작동하는지 이해하면 새로운 api를 배우는 데 최대 한 달이 걸릴 것입니다. 더 짧은 시간.


3
DX9는 구식이 아닙니다. XP에는 여전히 많은 잠재 사용자가 있습니다. 더 이상 개발 중이 아닐 수 있으며 앞으로 몇 년 안에 구식이 될 것이지만 지금 은 그렇지 않습니다.
공산주의 오리

1
@thecommunistduck 동의하지만 DX9는 완전히 구식입니다. 일단 지금 배우기 시작한 초보자는 그것을 잘 알게 될 것입니다. 그것은 구식 일 것입니다. 그리고 나는 내 대답에서 그것을 나쁘게 말했다.
Notabene

-5

win xp 시스템을 사용하는 dx9는 단일 코어 기반 시스템이라고 들었습니다. 오래된 기술입니다. 나는 당신에게 dx11을 추천합니다.


3
이 답변은 생산적인 것을 추가하지 않으며 "단일 코어 시스템"과 관련하여 제안하는 내용이 명확하지 않으며 잠재적으로 잘못되고 오도 될 수 있습니다.

1
게다가 "내가 들었다 ..."는 믿을만한 증거의 원천이 아니다.
Maximus Minimus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.