프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 1. 14. 11:27
if(GetAsyncKeyState(VK_LEFT) & 0x8000) m_vPos.x = m_vPos.x-SPEED_ * dTime; VK_LEFT를 누르고 있을때 왼쪽으로 이동하도록한다 누르고있을때 특정행위를한다. if(IsKeyUp(DIK_B)) _pStars->ChangeWarpMode(); B키를 눌렀다가 땟을때 ChangeWarpMode이함수를 실행한다. B를 한번 눌렀을때 특정작업을 하기위해사용한다. 출저:kdwgo0501님의 블로그 :: 네이버 블로그
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 1. 14. 11:25
점이 화면에 출력되기까지....3D로 구성되어있는 점을 2D로 표현하려면.. 여러개의 메트릭스를 거쳐야하죠? 그건 바로 그 유명한 World - View - Project 입니다. 이 세가지를 반드시 셋팅해 주어야 원하는 결과를 얻을 수 있는데. 이 세가지 매트릭스를 셋팅하는 함수 입니다. 좌표 * 행렬 = 새로운 좌표 좌표는 그대로 두고 행렬로 바꾸면 계속 새로운 좌표로 바꾸게 되져? 그러면 원본 모델은 가만이 두고 행렬만 변경하면 새로운 모델 좌표가 나오게 되져? 애니에서 현재물체의 행렬을 얻어와서 그 행렬에다가 새로운 좌표를 곱해서 새로운 좌표를 구할떄가 잇어여 그떄 행렬을 얻어야 뭘 한답니다. 그것도 있고 물체를 3d->2d로 가는 경우 중간중간 단계에서 현재 행렬을 얻어야 할 경우가 발생합니다...
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 1. 14. 10:41
D3DXMatrixLookAtLH() 는 view 행렬을 만드는 함수이다. 이 함수에서 중요한 것은 마지막 매개변수인 up vector 이다. 이 up vector 는 보통 D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) 를 넣는데 그 의미가 중요하다. 그 의미는 camera 가 roll 을 하지 않는다는 뜻이다. camera 가 옆으로 기울어지거나 물구나무 선 듯 뒤집어 져야 한다면 D3DXMatrixLookAtLH() 를 쓰기 보다는 번거롭더라도 view 행렬을 일일이 만들어 줘야 한다. [출처] D3DXMatrixLookAtLH|작성자 제너럴 D3DXMatrixLookAtLH(Out, Eye, At, Up) v = Normalized(At−Eye) r = Up×v u = v×r rx ux ..
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 1. 12. 17:26
1. Skeletal Animation DXUT를 이용하여 그래픽스를 공부하다보면 다른 내용은 수월하게 넘어가는 편이지만 의외로 애니메이션만큼은 내용도 난해하고 이해하기가 어렵습니다. 다른 예제는 그저 예제따라 변수 설정 몇 개 해주고 스테이트 설정하거나 함수를 인자에 맞게 돌려주면 구동되는 반면에 애니메이션만큼은 추상 클래스부터 구체화 시킨 뒤에 또 별별 세팅을 다 해줘야하는데 그 참조할만한 문헌은 이해도 잘 안 되고 난해하기까지 합니다. ( 물론 봤더니 이해할만하더라 하시는 분은 가볍게 넘겨주시면 되겠습니다. ) 결국 DirectX Sample에 있는 SkinnedMesh를 이해하는 데 거의 한 달 가까이 걸렸습니다. 그래서 다른 분들은 이 삽질을 피해갈 수 있었으면 하는 바, 간단하게나마 이론적 배..
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 1. 12. 17:20
DXUT Framework를 이용하면 별다른 설정 없이 손쉽게 그래픽 작업을 시작할 수 있습니다. DirectX Sample Browser에서 Empty Project를 원하는 이름으로 수정한 뒤에 Install을 하면 그 뼈대(Framework)를 제공해 줍니다. 하지만 안타깝게도 이 DXUT Framework에 대한 문서나 튜토리얼은 쉽게 찾기가 어렵습니다. 그래서 Framework의 구조와 여기서 쓰이는 Callback 함수에 대해 약간의 정보를 적어봅니다. DXUT Callback 함수프로젝트 안의 Winmain()의 내용을 보면 DXUTSetCallbackDeviceCreated( OnCreateDevice ); DXUTSetCallbackDeviceReset( OnResetDevice ); 와..