Loading...
2010. 5. 7. 07:07

카메라 클래스 - 오일러

이번에는 오일러를 바탕으로 한 간단한 카메라 클래스를 만들었다. 카메라에서 중요한건 회전이다. 이 회전처리하는 부분을 잘 보도록 하자. 뷰행렬 x y z | rx ux lx 0 | V = | ry uy ly 0 | | rz uz lz 0 | |-pr -pu -pl 1 | void CameraEular::GetViewMatrix(D3DXMATRIX* vmat) { // right, up, look 벡터들를 모두 단위벡터로 정규화. D3DXVec3Normalize(&lookAt_, &lookAt_); D3DXVec3Cross(&up_, &lookAt_, &right_); // up D3DXVec3Normalize(&up_, &up_); D3DXVec3Cross(&right_, &up_, &lookAt_); ..

2010. 5. 5. 15:09

Depth Stencil ( orbit )

이 예제는 두가지 부분이 추가되었다. 하나는 간단한 행렬계산으로서 같은 오브젝트를 위치회전값을 조절하여 orbit로 만든 것이다. // 첫번째 상자가 스핀하도록 월드행렬을 갱신한다. static float t = 0.0f; t += timeDelta * (float)D3DX_PI * 0.5f; if (t > D3DX_PI*2.0f) t = 0.0f; D3DXMatrixRotationY( &matWorld1, t ); pkmatWorld->SetMatrix((float*)&matWorld1); // 두번째 상자가 원점을 중심으로 회전하도록 월드행렬을 갱신한다. D3DXMATRIX mScale; D3DXMatrixScaling( &mScale, 2.0f, 0.5f, 1.0f ); D3DXMATRIX mSpi..

2010. 5. 5. 14:23

육면체 렌더링

삼각형 렌더링에 인덱스 버퍼만 추가된 정도. 회전값을 계속 지정해 주기 위해 render에 쉐이더 버퍼 값을 갱신한다. fx matrix matWorld; matrix matView; matrix matProjection; VS_Output VS( float4 pos : POSITION, float4 color : COLOR ) { VS_Output output = (VS_Output)0; output.pos = mul( pos, matWorld ); output.pos = mul( output.pos, matView ); output.pos = mul( output.pos, matProjection ); output.color = color; return output; } 이정도가 추가된 전부.

2010. 5. 5. 13:05

삼각형 렌더링

전의 삼각형 렌더링 예제에서는 정점쉐이더가 입력정점의 위치좌표를 그대로 리턴하였는데 이는 정점의 위치가 이미 클립공간에서의 위치일 경우에만 유효하다. 일반적으로 입력정점의 위치가 로컬공간이므로 정점쉐이더에서 이를 클립공간으로 변환해 주어야 한다. D3DXMATRIX matProjection; ID3D10EffectMatrixVariable* pkmatProjectionVariable = NULL; D3DXMatrixPerspectiveFovLH( &matProjection, (float)D3DX_PI * 0.5f, (float)SCREEN_WIDTH / (float)SCREEN_HEIGHT, 1.0f, 1000.0f ); // 상수버퍼 변수들을 얻는다. pkmatProjectionVariable = pk..

2010. 5. 2. 23:43

sprite 출력

2d sprite 출력 스프라이트 생성 ID3DX10Sprite* pkSprite; D3DX10CreateSprite(pkDevice, 64, &pkSprite); 이미지 로드 D3D10ShaderResourceView* pkTextureView = NULL; D3DX10CreateShaderResourceViewFromFile(pkDevice, L"G:/MProject/graphics/BackImg.jpg", NULL, NULL, &pkTextureView, NULL); 스프라이트 설정 구조체 D3DX10_SPRITE spriteDesc; spriteDesc.matWorld = W; spriteDesc.pTexture = pkTextureView; spriteDesc.TexCoord = D3DXVECT..

2010. 5. 2. 18:32

폰트 출력

회사에서도 맨날 폰트하는데....죽겠구만!!!!!! 폰트를 쓰는건 여러가지 방법이 있다. 1. CDXUTTextHelper의 사용 이 방식은 dxut에서 사용하는 방식이다. // 폰트의 생성 V_RETURN( D3DX10CreateFont( pd3dDevice, 15, 0, FW_BOLD, 1, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Arial", &g_pFont10 ) ); V_RETURN( D3DX10CreateSprite( pd3dDevice, 512, &g_pSprite10 ) ); g_pTxtHelper = new CDXUTTextHelper( g_pFont9, g_pSp..

2010. 5. 2. 10:03

2d 점찍기

창생성, 삼각형그리기에 이어 점찍기라니... 다시 시작한다는 마음으로 ㅎㅎㅎ. ID3D10EffectScalarVariable* vpWidthVariable = NULL; ID3D10EffectScalarVariable* vpHeightVariable = NULL; 이펙트 파일의 스칼라 값에 접근 하기 위해 위와 같은 인터페이스를 쓴다. vpWidthVariable = pkEffect->GetVariableByName( "vpWidth" )->AsScalar(); vpHeightVariable = pkEffect->GetVariableByName( "vpHeight" )->AsScalar(); vpWidthVariable->SetFloat( (float)SCREEN_WIDTH ); vpHeightVari..

거리에 관계없이 일정한 크기 모델은 어떻게 하나요?

3d물체를 카메라의 위치와 상관없이 일정하게 그려야 할 일이 생겼다. 카메라와의 거리에 의해 크기가 줄어드는데 그 줄어드는 정도를 사용자가 조절할 수 있어야 하고 특정한 거리만큼 멀어지면 더이상 줄어들면 안된다. 출처 : gpg http://www.gpgstudy.com/forum/viewtopic.php?t=21575&highlight=%B0%ED%C1%A4+%C5%A9%B1%E2 이전 주제 보기 :: 다음 주제 보기 글쓴이 메시지 copycd 가입: 2005년 5월 3일 올린 글: 23 거리에 관계없이 일정한 크기 모델은 어떻게 하나요? 올려짐: 2008-11-27 15:46 지형위에, 모델로 심볼들을 올렸는데. 하늘 높이 올라가면, 심볼들이 작아서 안보입니다. 하늘로 가나, 지형밑으로 내려오나, 일..