반응형


기본 프레임워크를 만들고 Assimp 라이브러리를 붙이기로 결정했다.


아직은 구조가 마음에 들지는 않지만 일단 테스트삼아 라이브러리에 있는 기본 모델을 얼른 띄워봤다.


간단하게 퐁 쉐이딩을 붙였는데 역시 안 예쁘다. -0-;; 일단 테스트니까..;;


이후에는 본과 애니메이션 정보를 얻어와서 적용해 봐야겠다.




반응형
Posted by msparkms
,
반응형


1) C/C++ ->General -> Debug Information Format 을 Program Database (/Zi) 로 변경
2) C/C++ -> Code Generation -> Enable Minimal Rebuild 를 No 로 변경
3) C/C++ -> Command Line -> /Ylsymbol 을 입력


반응형
Posted by msparkms
,
반응형


참고 사이트 : http://blog.emptycrate.com/node/421 

Visual Studio에서 속성 관리자를 연다음에 새 프로젝트 속성 시트 추가를 해주고 알맞게 속성을 지정하면 끝이다.

한번 설정해 놓으면 필요한 부분에다가 부모에게서 상속받는다고 지정만 해주면 된다. 

프로젝트가 많은 상황에서 폴더 하나 추가되면 다 고쳐줘야 해서 귀찮았었는데 진작 찾아볼걸 그랬다.

반응형

'프로그래밍' 카테고리의 다른 글

Bullet Helper 클래스  (0) 2012.11.26
warning LNK4099 해결방법  (0) 2012.10.06
윈도우창 관련 메시지 정리  (0) 2012.09.28
Bullet 엔진  (0) 2011.12.26
Optimizing the Graphics Pipeline  (0) 2011.12.13
Posted by msparkms
,
반응형



  WM_SIZE

  실시간으로 사이즈 변경이 완료된 경우

 wParam  : resizing에 대한 타입

- SIZE_MAXHIDE
- SIZE_MAXIMIZED
- SIZE_MAXSHOW
- SIZE_MINIMIZED
- SIZE_RESTORED

 lParam    : 클라이언트 영역 정보
- LOWORD() - width
- HIWORD()  - height

  WM_SIZING

  실시간 사이즈 변경중일때

 wParam  : 사이즈 변경중인 모서리 정보

- WMSZ_BOTTOM
- WMSZ_BOTTOMLEFT
- WMSZ_BOTTOMRIGHT
- WMSZ_LEFT
- WMSZ_RIGHT
- WMSZ_TOP
- WMSZ_TOPLEFT
- WMSZ_TOPRIGHT

 lParam    : 스크린 좌표기준 
                Rect 구조체

  WM_ENTERSIZEMOVE

  윈도우 프레임에 마우스를 클릭한 순간

 wParam  : 사용 안함

 lParam    : 사용 안함

  WM_EXITSIZEMOVE

  윈도우 프레임에 마우스를 땐 순간

 wParam  : 사용 안함

 lParam    : 사용 안함

  WM_MENUCHAR

 1. 사용자가 Alt키와 더불어 메뉴 항목에 대응하지 않는 문자 키를 눌렀을 때


 2. 팝업 메뉴가 표시되었을 때
 사용자가 팝업 메뉴의 메뉴 항목에 대응하지 않는 문자키를 눌렀을 때



 * DefWindowProc()에서 처리하면 0을 리턴하며 삑소리를 냄.
   이를 막기 위해서는 메시지 함수에서 return MAKELRESULT(0, MNC_CLOSE)와 같이 0이 아닌 값으로 리턴 처리


 wParam : 코드 값

- LOWORD() - 문자 코드

- HIWORD() - 선택 코드

          - MF_POPUP

          - MF_SYSMENU


 lParam : 메뉴 핸들

  WM_GETMINMAXINFO

 윈도우의 크기나 위치가 변경될 때 발생된다.

 디폴트 최대화 크기와 위치, 최소 크기를 변경할 수 있다.

 * MINMAXINFO의 ptMinTrackSize의 값으로 창의 최소크기를 지정.

 wParam  : 사용안함


 lParam  : MINMAXINFO 구조체의 포인터
              구조체의 값을 변경하여 셋팅



반응형
Posted by msparkms
,
반응형

DirectX 10 까지는 D3DX library의 3D Math쪽을 사용하였지만 DirectX 11부터는 XNAMath library가 제공된다.


XNAMath libarary는 SSE2 명령어 세트로 만들어진 라이브러리이다.

기본적으로 속도도 빠르고 병렬처리가 가능하므로 잘만 이용하면 알고리즘 최적화 등에도 사용할 수 있다.

어떤식을 디자인되었는지 궁금하면 Designing Fast Cross-Platform SIMD Vector Libraries를 참고하라.

#include <xnamath.h> 만 넣어주면 된다.


따로 라이브러리 추가도 필요없다. -> 헤더에 인라인 함수로 모두 구현되어 있다.

이전 함수는 접두사로 D3DX가 붙었는데 XNAMath는 XM이 붙는다.

대부분 함수 이름들이 비슷하니 금방 적응 할 수 있을 것이다.

XMVECTOR


로컬이나 전역 변수로는 XMVECTOR를 추천한다.


Class의 멤버 변수로는 XMFLOAT2, XMFLOAT3, XMFLOAT4를 추천한다.

위의 타입은 SIMD의 장점을 취하지 않는다. -> 그냥 일반 구조체

SIMD를 사용하기 위해서는 XMVECTOR 타입을 이용해야 한다.

loading 함수는 XMFLOAT*를 XMVECTOR로 변환하는데 사용된다.
storage 함수는 XMVECTOR를 XMFLOAT*로 변환하는데 사용된다.

loading 함수

XMVECTOR XMLoadFloat2(CONST XMFLOAT2* source);
XMVECTOR XMLoadFloat3(CONST XMFLOAT3* source);
XMVECTOR XMLoadFloat4(CONST XMFLOAT4* source);

XMVECTOR XMLoadInt3(CONST UINT* source);
XMVECTOR XMLoadColor(CONST XMCOLOR* source);
XMVECTOR XMLoadByte4(CONST XMBYTE4* source);

storage 함수

VOID XMStoreFloat2(XMFLOAT2* dest, FXMVECTOR V);
VOID XMStoreFloat3(XMFLOAT3* dest, FXMVECTOR V);
VOID XMStoreFloat4(XMFLOAT4* dest, FXMVECTOR V);

VOID XMStoreInt3(UINT* dest, FXMVECTOR V);
VOID XMStoreColor(XMCOLOR* dest, FXMVECTOR V);
VOID XMStoreByte4(XMBYTE4* dest, FXMVECTOR V);

get, set 함수

FLOAT XMVectorGetX(FMXVECTOR V);
FLOAT XMVectorGetY(FMXVECTOR V);
FLOAT XMVectorGetZ(FMXVECTOR V);
FLOAT XMVectorGetW(FMXVECTOR V);

XMVECTOR XMVectorSetX(FXMVECTOR V, FLOAT x);
XMVECTOR XMVectorSetY(FXMVECTOR V, FLOAT y);
XMVECTOR XMVectorSetZ(FXMVECTOR V, FLOAT z);
XMVECTOR XMVectorSetW(FXMVECTOR V, FLOAT w);

파라미터

// 32bit
typedef const XMVECTOR FXMVECTOR;
typedef const XMVECTOR& CXMVECTOR;

// 64bit
typedef const XMVECTOR& FXMVECTOR;
typedef const XMVECTOR& CXMVECTOR;

상수


typedef _DECLSPEC_ALIGN_16_ struct XMVECTORF32 {
     union {
          float f[4];
          XMVECTOR v;
     };
};

XMVECTOR, __m128i, __m128d 오퍼레이터가 구현되어 있음.

XMVECTORU32도 있음.

연산자 오버로딩


기본적으로 필요한 것들은 다 되어 있다.

추가 사항


MX_PI
XM_2PI
XM_1DIVPI
XM_1DIV2PI
XM_PIDIV2
XM_PIDIV4

XMFINLINE FLOAT XMConvertToRadians(FLOAT degree);
XMFINLINE FLOAT XMConvertToDegrees(FLOAT radian);

XMMin(a, b)
XMMax(a, b)

XMVerifyCPUSupport() 함수로 SSE2를 지원하는지 체크 가능.

Setter 함수


XMVECTOR XMVectorZero();
XMVECTOR XMVectorSplatOne();
XMVECTOR XMVectorSet(FLOAT x, FLOAT y, FLOAT z, FLOAT w);
XMVECTOR XMVectorReplicate(FLOAT s);
XMVECTOR XMVectorSplatX(FXMVECTOR V);
XMVECTOR XMVectorSplatY(FXMVECTOR V);
XMVECTOR XMVectorSplatZ(FXMVECTOR V);

Vector 함수


XMVECTOR XMVectorAdd(FXMVECTOR V1, FXMVECTOR V2);
XMVECTOR XMVectorSubtract(FXMVECTOR V1, FXMVECTOR V2);
XMVECTOR XMVectorMultiply(FXMVECTOR V1, FXMVECTOR V2);

XMVECTOR XMVector3Length(FXMVECTOR V);
XMVECTOR XMVector3LengthSq(FXMVECTOR V);
XMVECTOR XMVector3Dot(FXMVECTOR V1, FXMVECTOR V2);
XMVECTOR XMVector3Cross(FXMVECTOR V1, FXMVECTOR V2);
XMVECTOR XMVector3Normalize(FXMVECTOR V);
XMVECTOR XMVector3Orthogonal(FXMVECTOR V);
XMVECTOR XMVector3ANgleBetweenVectors(FXMVECTOR V1, FXMVECTOR V2);
VOID          XMVector3ComponentsFromNormal(XMVECTOR* parallel, XMVECTOR* perpendicular, FXMVECTOR V, FXMVECTOR normal);
VOID          XMVector3NotEqual(FXMVECTOR V1, FXVECTOR V2);

XMVECTOR XMVectorAbs(FXVECTOR V);
XMVECTOR XMVectorCos(FXVECTOR V);
XMVECTOR XMVectorLog(FXVECTOR V);
XMVECTOR XMVectorExp(FXVECTOR V);
XMVECTOR XMVectorPos(FXVECTOR V, FXVECTOR P);
XMVECTOR XMVectorSqrt(FXVECTOR V);
XMVECTOR XMVectorSwizzle(FXMVECTOR V, UINT E0, UINT E1, UINT E2, UINT E3);
XMVECTOR XMVectorMax(FXVECTOR V1, FXVECTOR V2);
XMVECTOR XMVectorMin(FXVECTOR V1, FXVECTOR V2);

XMFINLINE BOOL XMVector3NearEqual(FXMVECTOR U, FXMVECTOR V, FXMVECTOR epsilon);

등등 많은 함수 제공한다.

XMMATRIX


로컬이나 전역 변수로는 XMMATRIX를 추천한다.

Class의 멤버 변수로는 XMFLOAT4X4를 추천한다. -> XMVECTOR와 마찬가지로 구조체 패딩 정렬등의 문제.

대표적인 함수

XMMATRIX  XMMatrixIdentity();
BOOL          XMMatrixIsIdentity(CXMMATRIX M);
XMMATRIX  XMMatrixMultiply(CXMMATRIX M1, CXMMATRIX M2);
XMMATRIX  XMMatrixTranspose(CXMMATRIX M);
XMVECTOR  XMMatrixDeterminent(CXMMATRIX M);
XMMATRIX  XMMatrixInverse(XMVECTOR* determinent, CXMMATRIX M);

파라미터

typedef const XMMATRIX CXMMATRIX;

TRANSFORMATION


XMMATRIX  XMMatrixScaling(FLOAT ScaleX, FLOAT ScaleY, FLOAT ScaleZ);
XMMATRIX  XMMatrixScalingFromVector(FXMVECTOR Scale);
XMMATRIX  XMMatrixRotationX(FLOAT Angle);
XMMATRIX  XMMatrixRotationY(FLOAT Angle);
XMMATRIX  XMMatrixRotationZ(FLOAT Angle);
XMMATRIX  XMMatrixRotationAxis(FXMVECTOR Axis, FLOAT Angle);
XMMATRIX  XMMatrixTranslation(FLOAT OffsetX, FLOAT OffsetY, FLOAT OffsetZ);
XMMATRIX  XMMatrixTranslationFromVector(FXMVECTOR Offset);

XMVECTOR XMVector3Transform(FXMVECTOR V, CXMMATRIX M);
XMVECTOR XMVector3TransformCoord(FXMVECTOR V, CXMMATRIX M);
XMVECTOR XMVector3TransformNormal(FXMVECTOR V, CXMMATRIX M);

더 자세한건 도큐먼트를 참고하면 될 것 같다.

앞으로 사용해보면서 중요한 내용이 있거나 팁이 있으면 올리도록 하겠다.





반응형
Posted by msparkms
,
반응형




DirectX 11 버전의 용책이다. ㅎㅎ


DirectX 11을 공부해보고 싶어서 구입해 봤다.


이 책을 기준으로 서서히 정리해 보고 응용도 해보려고 한다.

반응형

'프로그래밍 > DirectX 11' 카테고리의 다른 글

DirectX11 초기화 0x887a002d 에러 해결  (0) 2018.04.14
Assimp 3.0 연동중  (0) 2012.10.17
XNAMath 라이브러리 간단 소개  (0) 2012.09.27
Posted by msparkms
,
반응형



http://graphics.cs.williams.edu/data/meshes.xml 



다른 링크를 찾으면 추가해야겠다.


근데 거의 다 있는듯. ㅎㅎ

반응형

'프로그래밍 > 게임 리소스' 카테고리의 다른 글

FBX SDK 사용해보기  (0) 2018.08.30
DDS 변환 Util - nvdxt  (0) 2015.10.07
Open Asset Import Library - Assimp  (0) 2012.09.11
WOW 모델 & 스타2 모델 Import 하기  (0) 2012.09.11
둠3 소스 공개!  (2) 2011.11.23
Posted by msparkms
,
반응형


http://assimp.sourceforge.net/


7월 10일에 3.0 버전이 나왔다!


적용은 안 할거지만 나중을 위해 남긴다.


안에 있는 샘플중에서 뷰어를 참조하면 Direct3D와 어떤 식으로 연동해야 하는지 흐름을 알 수 있다.

반응형
Posted by msparkms
,
반응형


WOW 모델 뷰어 : http://code.google.com/p/wowmodelviewer/downloads/list

M3 Plugin : http://www.sc2mapster.com/profiles/NiNtoxicated01/

MPQ Editor : http://www.zezula.net/en/mpq/download.html



일단 WOW를 설치하고 모델 뷰어를 켜서 연결시켜준다.


옆에 뜨는 리스트중 마음에 드는 모델을 선택한 후 Options->Export Options->M3(탭)을 선택한다.


스케일이나 텍스쳐 경로는 굳이 설정할 필요 없고 뽑고 싶은 애니메이션 리스트를 선택해 준다.


File->Export Model->M3를 선택하고 뽑아주면 해당 모델과 텍스쳐가 뽑혀진다.


스타2는 MPQ Editor 같은 MPQ 추출 프로그램을 통해서 M3파일과 텍스쳐를 뽑으면 된다.


Max에서 M3Script를 통해서 추출하면 끝!


스타2는 모르겠지만 WOW 모델은 재질부분에서 어떤 텍스쳐를 쓰는지 적혀있기 때문에 그대로 적용하면 됨.

반응형
Posted by msparkms
,
반응형




소프트웨어 렌더링을 이용한 엔진을 만드는 내용을 담은 책이다.


소프트웨어 렌더링을 이제 본격적으로 만드려고 하는데 


수학 라이브러리 만들기, 엔진 구성등등 꽤 다양한 내용이 있어서 도움이 될 것 같다.


읽고 적용할 만한 것이나 도움이 될 만한 것들은 포스팅 하도록 하겠다.

반응형
Posted by msparkms
,