목록DirectX2D (55)
응애맘마조
오늘은 프레임워크 안에 있는 게임 오브젝트에 대해서 배웠습니다. 이걸 가지고 도형을 그리게 되기 때문에 이 부분을 이해하지 못한다면 앞으로의 강의 이해에 많은 어려움이 생깁니다. 클래스 헤더 파일 안에 desc로 시작하는 변수들이 있습니다. desc는 description으로 서술형 구조체를 의미합니다. (모든 자원들마다 다 있습니다.) Usage는 사용하겠다는 의미를 가지고 있습니다. 안을 보면 enum값으로 정의가 되어있는데 D3D11_USAGE로 해서 GPU와 CPU의 읽기/쓰기를 제어합니다. 읽기/쓰기는 GPU가 하고 있으 CPU를 사용하지 않습니다. 그래서 D3D11_USAGE_DEFAULT를 사용합니다. (D3D11_USAGE_DEFAULT말고도 D3D11_USAGE_IMMUTABLE과 D3D..
드디어 DirectX에 들어갔습니다. 시작부터 꽤나 어렵습니다. 기본적으로 렌더링 파이프라인부터 시작합니다. 렌더링 파이프라인은 출력을 위한 구조입니다. 화면으로 표현하기까지의 모든 과정을 나타내고 있습니다.여기서 파이프라인은 한 단계의 출력이 다음 단계의 입력으로 이어지는 구조가 됩니다. 순서는 DrawCall → IA → VS → RS → PS → OM입니다.(HS, TS, DS, GS 단계 과정은 부수적인 것이라서 없어도 상관은 없습니다. 하지만 위에 적은 5가지 단계는 반드시 있어야 됩니다. 하나라도 없으면 출력 자체가 불가능합니다.) IA : Input Assembler (입력 조립기) 정점 정보를 긁어모으는 역할을 합니다.정점을 어떻게 그릴지 모양을 정하는 역할을 합니다. 여기에서 자원이 필요..
과제에 대한 풀이가 오늘의 강의가 되었습니다. 이미지를 사용하려면 프로젝트 폴더 내에 이미지를 추가하고 솔루션 파일 안에 있는 솔루션 탐색기에도 추가를 해야 정상적으로 사용할 수 있습니다. 전에도 말했듯이 LateUpdate() 함수는 모든 오브젝트가 이동한 뒤에 사용하는 함수입니다. 만약 조건문이 잘 되는지 바로 확인하는게 어렵다면 콘솔 창을 사용하는 것이 좋습니다. 특히 이번 과제에서는 반사각으로 튕겨 나가는 것이 예외처리가 조금 어려울 수도 있습니다. 왜냐하면 창의 크기가 바뀌거나 카메라 위치가 이동하거나 아니면 창 밖에 나가버려서 계속 껴있거나 할 수도 있습니다. 그래서 충돌처리 시 영역 처리가 굉장히 중요합니다. 따라서 충돌은 한 번만 날 수 있도록 밖으로 나간 영역에서 빼줘야 됩니다. 방법은 ..
※현재 프로그램에서는 해상도를 1400×800을 사용하고 있습니다. 어제 과제에 대해 풀이 내용 말고는 크게 없었습니다. 먼저 마우스 좌표가 스크린상 좌표 값과 월드 좌표 값이 다릅니다. 그래서 스크린 좌표를 월드 좌표로 변환해야 됩니다. x는 해상도의 절반인 700을 빼줘야 월드 좌표로 바뀝니다. y는 API상과 DirectX상 증가하는 방향이 다르기 때문에 y값인 800에서 먼저 빼서 증가량을 바꿔줘야 합니다. 그 후에 절반 값인 400을 빼서 계산을 합니다. 카메라 이동에 대해선 아직 배우지는 않았습니다. 강의에서는 카메라 이동값까지 계산해주는 것이 Screen To World라고 합니다. (이것이 완전한 공식이라고 했습니다.) 로테이션에 θ값을 넣어서 단위벡터를 먼저 만듭니다. 마우스 포지션 값에..
아마도 이번주까지는 수업이 조금 짧을 것 같습니다. 전에도 말했듯이 DirectX 들어가기 전 게임 기능 알아보기 위해 배우고 있는 기간이라 블로그 정리도 짧았습니다. 오늘 강의에서는 마우스 좌표를 얻어오는 방법에 대해 배웠습니다. Windows.cpp에 마우스 입력이 추가 되었습니다. Framework에 Input 안에 추가를 해서 받아오는 식으로 했습니다. Windows.cpp 파일 안에 WM_MOUSEMOVE가 추가 되었습니다. (message == WM_MOUSEMOVE)를 썼는데 마우스가 움직일 때마다 메시지를 보내는 코드를 썼습니다. 실제 작성 후 콘솔 창으로 출력을 하면 마우스 좌표가 나타납니다. 실제로 게임을 만들 때 마우스로 상호작용 하는 부분이 꽤나 많습니다. 이런 경우에는 객체와 상호..