본문 바로가기

전체 글

(223)
[3D] Direct3D 초기화 1. Direct3D란? - Direct3D는 3D 가속 하드웨어를 사용해 3D를 표현하게 하는 저수준 그래픽 API로 응용프로그램과 그래픽 장치를 연결하는 중개자이다. - Direct3D 가 공개하는 기능이라 하더라도 그래픽 하드웨어에서 지원하리라는 보장은 없다. 그래픽 카드의 종류는 매우 다양하며 각기 다른 방법으로 동작하기 때문에 Direct3D가 직접 그래픽 장치를 제어하기른 불가능하다. 때문에 Direct3D는 제조사에게 HAL을 구현할 것을 요구한다. - HAL (Hardward Abstraction Layer): HAL은 그래픽 장치가 특정한 작업을 수행하게 하는 장치 고유의 코드로 이를 통해 Direct3D가 각 장치의 세부적인 부분을 제어할 필요가 없게 한다.즉, 하드웨어 장치에 독립적인..
[한줄정리] 클래스의 정의 및 특성 문제) 클래스의 정의 및 특성에 대해 기술하시오. - 객체 지향 프로그래밍에서 클래스는 관련된 변수와 함수를 모아놓은 것으로 객체를 호출하기 위한 자료형으로 사용됩니다. - 클래스에는 4가지 특징이 있는데, 그것은 캡슐화, 정보은닉, 다형성, 재 사용성입니다. 캡슐화는 클래스의 여러 기능을 객체라는 하나의 집합으로 묶는 것으로 사용자는 그 객체의 기능만 알면되고, 내부는 알 필요가 없습니다. 정보은닉이란 public, private, protected 라는 접근 제어자를 사용해 클래스 내의 변수와 함수 중 사용자에게 공개할 정보와 숨길 정보를 구분하여, 외부의 접근을 통제하는 것입니다. 다형성은 약속된 인터페이스를 유지하면 얼마든지 다른 객체로 바꾸어 사용할 수 있다는 것입니다. 재사용상은 기존의 클래스..
[한줄정리] 포인터형 변수 문제) 포인터형 변수는 몇 byte인가요? - 포인터는 자료형에 상관없이 주소를 저장하는 변수이기 때문에, 32bits 운영체제에서는 4byte만 할당받습니다.
[한줄정리] 전처리 키워드 문제) 전처리 키워드란? - 전처리 명령이란 컴파일 전에 먼저 실행하는 것입니다. - 전처리 명령어에는 #define, #include, typedef, #pragma, #ifdef, #ifndef 등이 있습니다.
[한줄정리] strlen과 sizeof 문제) strlen과 sizeof의 차이점이 무엇인가요? - strlen은 문자열의 길이를 구하는 함수로 NULL을 제외한 문자열의 길이를 return하고, sizeof는 메모리 공간에 할당된 버퍼의 크기를 return하는 함수입니다. 예를 들면, char szBuf[256] = "miso"; 에서strlen(szBuf) 는 4 이고, sizeof(szBuf) 는 256 입니다.
[3D 수학] D3DXMatrixInverse 의 이해 D3DXMatrixInverse 의 이해 ( 부제 : Direct3D 역행렬 함수의 이해) 1. 2 x 2 의 역행렬 - Direct3D에서 자주 쓰이는 4 x 4의 역행렬을 하기 전에 2 x 2 역행렬 부터 알아보도록 하자. 행렬 A가 이러할 때, 행렬 A의 역행렬은 아래와 같다. - ad - bc 라는 판별식(=행렬식)이 0이 아닐 때만 역행렬이 존재한다. 왜나하면, 판별식의 값이 0이 되면 분모가 0이 되므로 값이 존재하지 않게 된다. 2. D3DXMatrixInverse - 이것은 D3DXMatrixInverse 함수의 매개 변수들의 의미이다.2번째 행렬식의 경우 필요한 경우에 이용되며, 일반적으론 0을 전달한다. pM의 행렬식은 내부에서 따로 계산한다. 3. 역행렬을 구하는 방법 - 역행렬을 구..
[3D 수학] 3D 변환 행렬 1. 이동 - (x, y, z, 1) 벡터에 이동 행렬 T(p)를 곱하면 x축으로 Px, y축으로 Py, z축으로 Pz만큼 이동된 벡터가 나온다. Direct3D에서 사용하는 함수명은 D3DXMatrixTranslate이다. 2. 회전 - 행렬을 이용해 x, y, z축에서 벡터를 회전시킬 수 있다. Direct3D에서 사용하는 함수명은 각각 D3DXMatrixRotationX D3DXMatrixRotationY D3DXMatrixRotationZ 이다. - Direct3D는 왼손 좌표계를 사용한다. 엄지를 위로 하고 검지와 중지를 폈을 때, 엄지가 +y, 검지가 +z, 중지가 +x 축이 된다. 3. 크기 변형 - 벡터에 이동 행렬 S(q)를 곱하면 x축으로 qx, y축으로 qy, z축으로 qz만큼 크기 ..
[3D 수학] D3DX 행렬 Direct3D는 4 x 4 행렬과 1 x 4 행 벡터만을 이용한다. - Direct3D에서 4 x 4 행렬을 이용하는 이유는 이 크기를 이용해 우리가 원하는 모든 변환을 표현할 수 있기 때문이다. 이동이나 투영, 반사 등과 같은 변환은 3 x 3 행렬로는 표현할 수 없고, 우리가 작업하려는 것은 벡터와 행렬의 곱이기 때문에 변환 수행을 위한 행렬 곱 규칙에 제한을 받는다. 4 x 4 행렬로 하면 벡터, 행렬 곱을 이용한 좀 더 다양한 변환을 시도할 수 있다. - 1 x 4 행 벡터에는 포인트의 좌표나 벡터의 성분을 넣는다. 포인트나 벡터는 3D 이다. 때문에 x, y, z 세 성분은 각각의 내용을 넣고, 4번째 인자인 w 성분은 포인터인지 벡터인지 구분하는 인자가 된다. 1 x 4 행 벡터에 포인트를 ..