프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 3. 23. 00:21
HRESULT InitD3D( HWND hWnd ) { //device 생성위한D3D 객체생성 if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; //디바이스생성용구조체 D3DPRESENT_PARAMETERS d3dpp; //구조체를깨끗이 ZeroMemory( &d3dpp, sizeof(d3dpp) ); //창모드 d3dpp.Windowed = TRUE; //D3DSWAPEFFECT 열거형 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //현재바탕화면모드에맞춰후면버퍼생성 d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //D3DADAPTER_DEFAULT : 디바이스..
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 3. 22. 23:53
D3D프로그램 기본 구조 1. RegsterClassEx() 로 생성하고자 하는 윈도우 클래스를 등록 2. CreateWindow()로 윈도우 생성 3. InitD3D() 함수에서 DirectX 초기화 4. ShowWindow(), UpdateWindow() 로 윈도우를 화면에 표시 5. GetMessage(), TranslateMessage(), DispatchMessage()로 이루어진 메시지루프 수행 6. 메시지 루프를 빠져나올 경우 Direct3D 메모리해제 7. 프로그램 종료 WIN32프로그램과 비교 WIn32 프로그램 구조 1. RegisterClassEx 윈도우 클래스 등록 2. CreateWindow 윈도우 생성 3. ShowWindow 4. Message 대기 5. 프로그램 종료 D3D ..
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 3. 22. 23:45
1. 3차원 공간 개념 다이렉트는 왼손좌표계를 쓴다. Z좌표가 들어가는 쪽이 + 다. 2. 벡터, 행렬에 대한 이해 행렬변환 -> 이동,회전,크기 을 쉽게 할 수 있다. 이동과 회전만을 하는 변환을 아핀변환이라고함 3D그래픽에서 행렬을 사용하는이유? => 행렬을 사용하는 가장 큰이유는 이동회전크기를 행렬을 사용하면 쉽기때문, 또한 결합법칙이 성립하게 때문에 연산횟수를 엄청 줄일수있다(변환행렬을 한번에 구해서 계산) 벡터의 내적연산: 은면제거 기법에 사용, 또는 좌표계변환, 조명계산에 많이 사용 벡터의 외적연산: 두벡터를 외적하면 두 벡터의 평행한 벡터가 나온다는 성질을 이용해 법선벡터를 만듬 3.폴리곤(polygon), 정점(vertex), 변(edge), 텍스쳐(texture), 깊이버퍼(Z-버퍼)..
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 3. 12. 12:40
용어정리1은 링크해놓겠다!!! 2011/01/07 - [프로그래밍/Direct3D] - 3D 그래픽스 용어정리-1 0.비실시간 랜더링,실시간 랜더링 비실시간 랜더링:불편한 랜더링 타임을 없애고 효과를 주는 즉시, 결과를 확인 할수 있는 형태를 실시간 랜더링이라 한다. 이러한 기술은 효과 및 자막의 랜더링을 소프트웨어에 의존했던 기존의 방식을 탈피해 편집보드의 칩에 효과를 넣어 하드웨어 랜더링을 실시하므로 실시간 랜더링을 구현했다. 실시간 랜더링: 일괄처리와 같이 일정 기간 동안 발생된 데이터를 모아 한 번에 처리하는 방식으로 실시간 체계로 이루어지지 않는 시스템 1.옵티마이즈( optimize ) : 최적화(좋게 만들다) 2.밉맵: 하나의 텍스쳐를 일정한 크기로 축소시켜서 여러장을 가지고 그려질때 현재 ..
프로그래밍/3D그래픽스 & 쉐이더 스피비 2011. 1. 27. 11:20
X파일을 보기위한 뷰어. 별것도 아닌데 구하는데 쥰나 힘들었음 ㅠ 왜 내 DX Utility 엔 안깔려있는거지?