2015-01-12 2 views
0

저는 SlimDX를 처음 사용하고 기존 시스템에서 작업하고 있습니다. 이 사용중인에서는 Direct3D 장치입니다,하지만 난에서 CreateSphere를 사용하려고 해요하십시오에서는 Direct3D 장치 CreateMesh를 사용하는 방법은 없나요Direct3D9 디바이스를 사용하는 Direct3D9 CreateSphere 사용

SlimDX.Direct3D9.Mesh.CreateSphere(Direct3D9.Device,...) 

? Direct3D9.Device 로의 캐스트가 유효한 캐스트가 아닙니다. 왜 새로운 API가 구체를 만드는 것처럼 단순한 기능을 제거하는지 이해할 수 없습니다.

답변

1

귀하의 질문에 대한 문제는 두 가지 매우 다른 것을 섞어 버리는 것입니다.

DirectX API에는 CreateSphere 메서드가 없었습니다. 이것은 마이크로 소프트에 의해 중단 된 도우미 라이브러리 인 DXUT에 포함되어있었습니다.

직접 작성하거나 미리 만들어진 메쉬를 사용하십시오. 어떻게해야할지 모르겠다면 어쨌든 도우미 라이브러리에 너무 많이 의존했을 것입니다.

물론 3D 스퓌 어와를 만드는 것이 어떻게 든 간단한 작업이라는 느낌으로 이해 수준이 배반됩니다. 그렇지 않습니다. DXut가 처음에 중단 된 이유 중 하나 일 것입니다. 여러분이하는 일에 많이 의존하는 3D 프리미티브를 생성하는 다양한 방법이 있습니다. 구형 (UV 구, Icosphere, ...)의 정점을 배열하는 여러 가지 방법,이를 색인화하는 여러 가지 방법, 수행중인 작업에 따라 다르게 채워야하는 여러 가지 정점 형식이 있습니다.

프로그래머블 그래픽 파이프 라인의 시대 이전에는 이러한 문제가 단순히 없었던 경우에도 도우미 라이브러리를 보유하는 것이 여전히 중요했습니다. 오래된 고정 파이프 라인은 상대적으로 간단한 작업을 위해 사전 제작되었습니다. 오늘날에는 유연성이 뛰어나 HLSL, 텍스처 매핑, 조명 계산 등과 같은 것들이 어떻게 수행되는지 이해해야하는 데 약간의 비용이 듭니다.

+0

CreateSphere 직접 DirectX에 없었기 때문에 SlimDX를 언급했습니다. SlimDX는 특별히 도우미 라이브러리로 제작되었습니다. 이 경우 CreateSphere() 빌드의 정확한 유형을 원합니다. Direct3D11 장치 만 사용할 수있는 경우이 방법을 사용할 수 있습니까? – Brandon

+1

@Brandon 내가 아는 한, SlimDX는 실제로 DX11에 존재하지 않는 DXUT 메소드를 호출하고있다. (또 다시 좋은 이유가 있음). DX9 방법을 사용하여 예를 들어 수동으로 메쉬를 변환 할 수는 있지만 그렇게 할 이유가별로 없습니다. 모델을 가지고 있거나 원하는 방식으로 메쉬를 만들 수 있습니다. DXUT 방법은 실제로 프로그래밍 가능한 GPU 모델을 의미했습니다. 프로그래밍이 가능한 GPU 세계에서 원주민이 되어라. 예전 모델은 오래전에 꽤 죽었다. SlimDX는 도우미 라이브러리가 아니며 가벼운 DirectX 래퍼입니다. – Luaan

+0

C++의 경우 Direct3D 11 용 [DirectX Tool Kit] (http://go.microsoft.com/fwlink/?LinkId=248929) 라이브러리에는 구를 포함하는''GeometricPrimitive'' 클래스가 포함되어 있습니다. 바라기를 SlimDX는 곧 그렇게 보일 것입니다. –

관련 문제