"DirectX"의 두 판 사이의 차이
jjuiddong
92번째 줄: | 92번째 줄: | ||
** SIMD 를 쓰면 조금 빨라진다는 내용의 글이지만, 실무에 대한 얘기가 아니다. | ** SIMD 를 쓰면 조금 빨라진다는 내용의 글이지만, 실무에 대한 얘기가 아니다. | ||
*** http://minjang.egloos.com/2520416 | *** http://minjang.egloos.com/2520416 | ||
+ | |||
+ | * Exporter | ||
+ | ** panda exporter 설치 | ||
+ | ** http://khm979.tistory.com/entry/WOW-%EB%8C%80%EA%B2%A9%EB%B3%80-%EB%AA%A8%EB%8D%B8-X%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B01 |
2014년 6월 2일 (월) 11:24 판
- 문자열 출력
- DirectX sample의 Text3D 프로젝트를 참조하자.
- ID3DXSprite, ID3DXFont 를 잘 사용하는게 관건이다.
- <3D 공간상에 폰트 출력하기> 참조
- ID3DXSprite 객체를 사용해서 텍스쳐 출력하기.
g_TextSprite->Begin( D3DXSPRITE_ALPHABLEND); Matrix44 mm; mm.SetScale(Vector3(0.5, 0.3f, 0.3f)); g_TextSprite->SetTransform((D3DXMATRIX*)&mm); RECT rc2 = {0,0,1920,2000}; Vector3 center(00,00,0); Vector3 pos(0,0,0); g_TextSprite->Draw(g_Texture1, NULL, (D3DXVECTOR3*)¢er, (D3DXVECTOR3*)&pos, D3DCOLOR_RGBA(255,255,255,255)); g_TextSprite->End();
- 3D좌표를 투영된 2D좌표로 변환하기
- D3DXVec3Project() 함수를 이용하자.
PxTransform viewTM = m_Sample.getApplication().getCamera().getViewMatrix(); PxTransform tm = m_pRenderNode->getTransform(); tm.p.x = -tm.p.x; // change left hand axis D3DXMATRIX m; convertD3D9(m, tm); D3DXMATRIX mProj; D3DXMatrixPerspectiveFovLH(&mProj, 55.f * PxPi / 180.0f, 800.f/600.f, 0.1f, 10000.f); D3DXMATRIX mView; { D3DXVECTOR3 pos(-viewTM.p.x, viewTM.p.y, viewTM.p.z); PxVec3 lookAt = viewTM.p + (m_Sample.getApplication().getCamera().getViewDir() * 10.f); D3DXVECTOR3 target(-lookAt.x, lookAt.y, lookAt.z); D3DXMatrixLookAtLH(&mView, &pos, &target, &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); } D3DVIEWPORT9 viewport; viewport.X = 0; viewport.Y = 0; viewport.Width = 800; viewport.Height = 600; viewport.MaxZ = 1; viewport.MinZ = 0; D3DXVECTOR3 v; D3DXVec3Project(&v, &D3DXVECTOR3(0,0,0), &viewport, &mProj, &mView, &m); if ((v.x < 0) || (v.y < 0) || (v.x > 800) || (v.y > 600)) return; m_Sample.getRenderer()->print(v.x, v.y, m_Name.c_str() );
- 라인출력
LPD3DXLINE m_line; D3DXCreateLine(device, &m_line); PxTransform viewTM = m_Sample.getApplication().getCamera().getViewMatrix(); D3DXMATRIX mProj; D3DXMatrixPerspectiveFovLH(&mProj, 55.f * PxPi / 180.0f, 800.f/600.f, 0.1f, 10000.f); D3DXMATRIX mView; { D3DXVECTOR3 pos(-viewTM.p.x, viewTM.p.y, viewTM.p.z); PxVec3 lookAt = viewTM.p + (m_Sample.getApplication().getCamera().getViewDir() * 10.f); D3DXVECTOR3 target(-lookAt.x, lookAt.y, lookAt.z); D3DXMatrixLookAtLH(&mView, &pos, &target, &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); } m_line->Begin(); D3DXMATRIX mat = mView * mProj; m_line->DrawTransform( &m_lineList.front(), m_lineList.size(), &mat, D3DCOLOR_XRGB(255, 0, 0)); m_line->End();
- 벡터와 면의 충돌 판정 함수
- D3DXIntersectTri() 함수를 이용하자.
- http://blog.naver.com/PostView.nhn?blogId=zeowing&logNo=90082927644
- 직접 짠 코드, IntersectTri() 함수를 참조하자.
- 3DMax Exporter
- panda exporter
- http://www.andytather.co.uk/panda/directxmax_downloads.aspx
- XNA math
- xna 와 c 로 짠 벡터 연산 비교 결과다. 결론은 그냥 c 로 짜자.
- SIMD 를 쓰면 조금 빨라진다는 내용의 글이지만, 실무에 대한 얘기가 아니다.