Graphics 87

Direct X - 10. 키보드 입력

키보드 입력은 Direct Input을 사용하는게 좋지만 간단하게 C# API로 해보자 using System; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; using System.Windows.Forms; using System.Drawing; namespace MDXSample { /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { private bool[] _keys = new bool[256]; public bool InitializeApplication(MainForm topLevelForm) { // 폼의 참조를 보관 유지 this._form = topLevel..

Graphics/DirectX 2014.06.08

Direct X - 9. 텍스쳐 넣기 (그림넣기)

이번에는 다각형 안에 이미지를 넣어보자3D에서는 이것을 바로 텍스쳐(Texture)라고 불러요, 이미지 파일을 읽어 작성한다. 게임에서는 필수적으로 사용되고, 보다 리얼한 모델을 구현하는데 초점을 맞춘다.   DirectX 3D의 텍스쳐에 대해서 간단하게 알아보자이 텍스쳐를 다각형에 붙이려면 정점 데이터에 UV좌표를 주지 않으면 안됩니다.UV좌표와는 정점의 어느 부분과 재질감의 어느 부분과 맞출까?를 나타내는 거다 UV좌표 - 모든 이미지에 동일!  이번 실습에 쓰이는 다각형은 사각형이니까 이 UV좌표를 그대로 쓰면 되겠다! 그럼 소스를 보자 using System;using Microsoft.DirectX;using Microsoft.DirectX.Direct3D;using System.Windows...

Graphics/DirectX 2014.06.08

Direct X - 8. 3D 사각형 출력

사각형은 자주 사용하니까 연습을 해두는게 좋다고한다.하지만 이 DirectX 에서는 그렇지 않다.꼭지점이 여섯개인 도형이다, 무슨말이냐삼각형 두개를 합친겁니다. 그렇다구 정점 수를 여섯개로 하느냐? 그건 또 아닙니다.4강에서 했던 메서드 PrimitiveType.TriangleStrip 이것으로 하면 4개의 정점만으로 삼각형 두개를 붙인 효과, 즉 사각형을 만들어내는 효과를 낼 수 있지요  정점의 인덱스는 위 그림과 같은데, 항상 정해져 있는거니까 이 차례는 신경써야합니다, 그렇지 않으면 모양이 흐트러진다 using System;using Microsoft.DirectX;using Microsoft.DirectX.Direct3D;using System.Windows.Forms;using System.Dr..

Graphics/DirectX 2014.06.08

Direct X - 7. 3D 공간에 3D 삼각형 출력

실행했을때에는 4, 5강과 같은 똑같은 모양의 삼각형이 보이지만,사실은 3차원공간에 서있는 삼각형이다^^using System;using Microsoft.DirectX;using Microsoft.DirectX.Direct3D;using System.Windows.Forms;using System.Drawing;namespace MDXSample{ /// /// 메인 샘플 클래스 /// public partial class MainSample : IDisposable { /// /// 정점 버퍼 /// private VertexBuffer _vertexBuffer = null; public bool Init..

Graphics/DirectX 2014.06.01

Direct X - 6. 좌표 변화 세가지 (월드, 뷰, 투영)

3D에 관해 필요한 간단한 지식 알고가자.우리의 모니터는 2차원 평면이기 때문에 X, Y의 2차원 정보밖에 가질 수 없음그렇다면, 그렇다면 어떻게 2차원 평면에 3차원 공간을 옮길 수 있는 것이냐?3차원의 정보를 2차원으로 변형하기 때문에 가능2차원의 화면상에서 3차원의 공간으로 인식하게 변환하고 있는데, 이것을 바로 좌표변환이라고 불러DirectX 프로그래밍에서는 이 좌표변화를 세가지로 분류되는데, 월드좌표변화, 뷰 좌표변화, 투영 좌표변화 그럼 이 세가지에 대해서 알아보자.OpenGL과 공통으로 알고 가야 할 지식들이다  - OpenGL이 오른손 좌표계를 쓴다는 것 외에 다른 개념들은 동일  월드좌표변화위와 같은 상자가 있다고 치자, 중심점은 (0, 0, 0)이 상자를 이동시키거나 회전시키고 싶으면 ..

Graphics/DirectX 2014.06.01

Direct X - 5. 정점버퍼를 이용한 삼각형 출력

4강과 같은 삼각형의 출력이지만, 정점 버퍼를 사용했다는 점이 다르다. 정점버퍼를 사용하는 이유는, 4장처럼 정점 데이터를 그리는 시점에서 직접 전송을 할 경우, 메인루프를 도는 과정에서 매회 데이터를 보내지 않으면 삼각형 표시가 되지 않기 때문에, 처리에 많은 시간이 걸릴 가능성이 있어,,BUT, 정점버퍼는 정점버퍼를 비디오메모리(GPU : 그래픽카드)에 배치할 수 있기 때문에 성능이 좋아져^^ 특히! 3차원 데이터를 그릴 때, 훨씬 그 퍼포먼스는 좋아지지(정점의 수가 많아지니까!) 일단 소스를 보자 using System;using Microsoft.DirectX;using Microsoft.DirectX.Direct3D;using System.Windows.Forms;using System.Draw..

Graphics/DirectX 2014.06.01

Direct X - 4. 2차원 도형 출력

이번엔 2차원 도형 출력이다!주황색으로 표시된 부분이 새로 추가된 부분이고 나머지는 기본 골격에서 벗어나지 않는다.this.CreateFont();는 3강 글자출력에서 했던 부분을 메서드화 시켜놓은 것 MDX.csnamespace ddrawexercise{ public partial class MDX : IDisposable // 관리되지 않는 리소스 해제 { private CustomVertex.TransformedColored[] _vertices = new CustomVertex.TransformedColored[3]; // 탑레벨 윈도우 : 모든 초기화가 OK면 true, 하나라도 실패하면 false를 리턴한다. // false를 리턴하게되면 자동..

Graphics/DirectX 2014.06.01

Direct X - 3. 글자출력

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics; // 2강에서 추가된 네임스페이스using System.Windows.Forms; // 메세지 박스using System.Drawing; // Color속성 사용using Microsoft.DirectX;using Microsoft.DirectX.Direct3D; // 라이브러리 두개 추가namespace ddrawexercise{ public partial class MDX : IDisposable // 관리되지 않는 리소스 해제 { private Microsoft.Dir..

Graphics/DirectX 2014.06.01

Direct X - 2. 초기화와 기본처리

수정된 MDX.cs  using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics; // 2강에서 추가된 네임스페이스using System.Windows.Forms; // 메세지 박스using System.Drawing; // Color속성 사용using Microsoft.DirectX;using Microsoft.DirectX.Direct3D; // 라이브러리 두개 추가namespace ddrawexercise{ class MDX : IDisposable // 관리되지 않는 리소스 해제 { private Form1 _form = nu..

Graphics/DirectX 2014.06.01

Direct X - 1. 기본설정

먼저 DirectX SDK를 다운로드하고 설치해야 한다.- 알아낸게 있는데, C# 2008까지 DirectX를 지원하고 그 이후로는 XNA가 대신한다.- DirectX SDK도 2007년 8월(August)버전까지만 C# 2008에서 인식이 가능하다.- XNA로 갈아타야겠다. 우선 기초를 다지기 위해 DX를 그래도 해보자ㅠㅠ 다이렉트드로우를 사용하기 위해서는 라이브러리를 먼저 참조시켜야 한다. 솔루션 탐색기에서 참조 오른클릭 -> Managed DirectX부분을 참조추가 하면 된다.3D와 DX, 다이렉트 인풋, 사운드 등등 다 체크해서 불러온다.DX는 아주아주많은데, 최신버전을 체크한다. 대신 2.0.0.0같이 앞이 2인건 체크하지마! using Microsoft.DirectX;이 using문을 사용한..

Graphics/DirectX 2014.06.01