본문 바로가기

Programming/DirectX 3D4

DrawPrimitive외 여러 Draw함수들 D3D 드로잉 방법에는 여려가지가 있는데 매번 볼때마다 헷깔리는데 정리를 해보자. 1. DrawPrimitive DrawPrimitive 는 버텍스 버퍼를 이용해 Draw할때 쓰임. m_pD3DDevice->SetStreamSource( 0, pVB, 0, sizeof(CUSTOMVERTEX)); m_pD3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); m_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2); 2. DrawIndexedPrimitive 인덱스 버퍼의 장점은 정점을 여러번 나열하는 메모리 소모량을 줄일수 있고 정점 캐시에 저장해서 높은 효율을 낼수 있다. 예를 들어서 사각형은 삼각형이 2개가 필요하다. 이걸 버텍스 버퍼를 이.. 2012. 2. 23.
DirectX 3D - 적이 플레이어를 따라오게 하기 - 폴리곤을 띄운후 폴리곤이 비행기라고 생각하고 적 폴리곤이 플레이어 폴리곤으로 따라오게 하는 방법이다. 그림과 같이 설명을 하자면 먼저 초록색 화살표가 적의 Up벡터이다. 그리고 빨간색 화살표가 적과 플레이어 사이의 방향 벡터이고, 파란색 화살표가 각각 왼쪽방향벡터, 오른쪽방향벡터이다. 먼저 적이 플레이어를 바라보는 각을 구해야하는데, 앞에서 배운 내적의 공식을 이용해서 이 각을 구해낼 수 있다. D3DXVec3Dot 함수를 이용하면, 두 벡터 사이의 내적값을 구할 수 있다. 내적을 하게 되면, 이 값은 cosΘ값이 나오게 되므로 acos(내적값)을 해서 우리가 원하는 Θ을 뽑아낸다. 여기서 나오는 값은 각도가 아니고 라디안 값이다. 그럼 이제 얼마만큼의 각도로 가야할지는 정해진것이다. 그다음은 움직여야 .. 2012. 2. 16.
Visual Studio 2008에서 DirectX 3D 프로그래밍 시작하기 일단 Visual Studio에서 DirectX 프로그래밍을 하려면 DirectX SDK가 필요하다. 버전이 계속 여러개 나오고있지만 여기서 우리는 2007 November 버전을 기준으로 설명하고 사용하겠다. 각 버전마다 차이점도 있고, 중간중간 사라지는 기술도 있다고 한다. (이 부분에 대해선 검색을...) [오늘의 주인공 DirectX SDK November 2007] 프로그램 설치 과정은 생략하겠다. 왜냐하면 그냥 누르면 예, 다음->다음->의 진행방식이고 특별한 셋팅이 없기 때문이다. (사실 캡쳐하기 너무...귀찮다.... 이미 설치한 상태라 ㅠㅠ) 먼저 Visual Studio를 실행시킨뒤에 [도구 -> 옵션]을 들어간다. 옵션창이 뜨면 좌측 상단에 [VC++ 디렉터리]를 선택하고 우측에서 [.. 2012. 2. 6.
DirectX 3D - 기초 용어 - 1. 3차원 좌표계 (3D coordinate system) - 왼손 좌표계란 아래 그림과 같이 양(+)의 Z축이 모니터의 안쪽으로 들어가는 방향을 말한다. - D3D에서는 왼손 좌표계를 사용한다. - OpenGL에서는 왼손, 오른손 좌표계를 선택적으로 사용할 수 있다. 2. 벡터와 스칼라 - 벡터 : 크기와 방향을 갖는 물리량. (가속도, 속도 등의 크기와 방향을 동시에 표현해야하는 수치) - 스칼라 : 크기만 갖는 물리량. (기압, 속력 등의 단일한 숫자 표기, 방향이 없다!) 벡터는 3차원 그래픽스 상에서 은면제거(backface-culling)나 음영(shading)등에 주로 사용된다. 아래 그림은 2차원 평면 상에서 원점 O(0, 0)을 기준으로 점 P(x, y)를 향하는 벡터 OP를 나타낸.. 2012. 2. 5.