목록C (155)
응애맘마조
오늘부터 이틀간 카메라 이동에 대해서 배우게 되었습니다. 카메라 시점의 이동이 어떻게 변화하느냐에 따라 게임 품질과 역동성이 강조가 된다고 합니다. 먼저 다시 중요하게 필요했던 변수에 대해 작성하겠습니다. 변수로 메모리 할당에는 두가지 방법이 있습니다. 동적 생성과 지역 변수를 사용하는 방법입니다. 동적 생성은 사용자가 필요할 때 생성되고 필요 없을 때 해제 하는 방법입니다. 지역 변수는 선언 되었을 때 생성하고 메인 함수가 없어질 때 일괄적으로 해제가 됩니다. (지역 변수의 주기는 자동 주기입니다.) 사용하고 난 메모리는 계속 할당되어있을 필요가 없기 때문에 delete 함수를 사용하여 해제를 하는데 해제를 두 번 이상 하게 되면 프로그램 창을 닫았을 때 액세스 위반이 나게 됩니다. 이미 해제했던 메모..
어제 말했던 대로 VS에 들어갔습니다. 오늘이 가장 어렵다고 하네요. IA에서 VS로 넘겨주게 될 때 position과 color값을 넘기게 됩니다. 이 사이에 넘겨주는 값을 InputLayout이라고 했습니다. struct VertexInput { float4 position : POSITION0; float4 color : COLOR0; }; float4는 float이 4개 붙어있다고 보시면 됩니다. (4Byte × 4 = 16Byte로 볼 수 있습니다.) 위의 코드에서 POSITION0, COLOR를 시맨틱(semantic)이라고 하고 용도를 나타냅니다. Layout에서 넣은 값들을 IA출력으로 넘기고 그게 VS의 입력으로 들어갑니다. D3D11_INPUT_ELEMENT_DESC는 VS에 들어온 원..
IA의 마지막 3일차입니다. 오늘은 Shader(셰이더)에 대해서 했었습니다. 어제에 이어서 hlsl에 대해서 좀 더 배웠습니다. 이 hlsl에서는 중단점을 찍으면 중단점 자체에 오류가 생깁니다. 하지만 컴파일 대상이 되지 않아서 할 수가 없는데 렌더링 파이프라인을 거쳐 모니터에 출력이 되려면 반드시 컴파일을 해야 됩니다. 컴파일 대상이 아니지만 바인딩을 하는 방법이 있습니다. 셰이더 클래스가 있는데 그 안에 있는 자원들이 하게 됩니다. cpp파일을 보면 char, wchar_t, string, wstring이 있습니다. char은 아스키코드에 있는 문자 하나를 출력합니다. (그 이외의 문자는 출력할 수 없습니다.) wchar_t는 2바이트로 된 문자도 출력이 가능합니다. string은 아스키코드에 있는..
오늘은 프레임워크 안에 있는 게임 오브젝트에 대해서 배웠습니다. 이걸 가지고 도형을 그리게 되기 때문에 이 부분을 이해하지 못한다면 앞으로의 강의 이해에 많은 어려움이 생깁니다. 클래스 헤더 파일 안에 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 (입력 조립기) 정점 정보를 긁어모으는 역할을 합니다.정점을 어떻게 그릴지 모양을 정하는 역할을 합니다. 여기에서 자원이 필요..