본문 바로가기

반응형

게임/게임 엔진의 이해

[Handmade Hero] 005 - Windows Graphics Review 오늘의 공부 (흐름) - WNDCLASS - Win32ResizeDIBSection (Backbuffer 할당) - WindowClass에서 변수를 Stack에 할당 - WIndowClass에서 받아온 변수를 RegosterClass로 넘긴다. - 윈도우창 생성 - PeekMessage (윈도우창 실행) - RenderweirdGradient (Backbuffer로 임시 디스플레이를 그린다, 256x256 블록 패턴) ### GetDC ### - Win32GetWindowDimension (사각형의 요소를 가지고 온다.) - Win32DisplayBufferinWindow (StretchDIBiats을 통해 Display한다.) ### ReleaseDC ### - Gradient Increment for.. 더보기
[Handmade Hero] 004 - Animating the Backbuffer 오늘의 공부 - VirtualAlloc: 메모리 할당 - VirtualFree: 메모리 헤제 - PeekMessage: 메시지가 없을 때 계속 Running 상태로 둔다. - GetMessage: 메시지가 없을때는 상태를 Block한다. - GetDC & ReleaseDC (for DeviceContext) 흐름 - 빈 BitmapMemory 변수에 메모리가 할당된다. (VirtualAlloc) - 할당된 메모리는 StretchDIBits가 전달받는다. - StretchDIBits가 Display를 그린다. 디버깅 BitmapMemory - BitmapMemory에 들어가있는 값이 0인걸 확인한다. - 수많은 Header들을 채워가면서 VirtualAlloc을 했을 때 BitmapMemory에 값이 들어.. 더보기
[Primal Engine] 004 - Loading game projects 오늘의 공부 - 저장된 프로젝트 폴더 경로를 받아서 불러오는 기능 (OpenProject.cs) - Save, Load, Unload, Active Scene 기능 (Project.cs) - 불러올 때 문제가 있을 경우 문제가 있다고 알려주는 알림 메시지를 보여주기 (MainWindow.xaml.cs) - 그외 자잘한 파일들 수정 (Scene.cs) 디버깅 ActiveScene에 올바른 데이터가 들어갔는지 확인 (Project.cs) DataContext에 올바른 데이터가 들어갔는지 확인 (MainWindow.xaml.cs) 결론 - 실질적으로 프로젝트를 오픈한 것은 아니지만 DataContext에 알맞은 데이터가 들어간 것을 확인하였다. 더보기
[Handmade Hero] 003 - Allocating a Backbuffer 오늘의 공부 Win32 API - CreateDIBSection: 마우스에 의한 윈도우창 사이즈 변경 - - BITMAPINFO: 각각의 헤더들의 설정을 지정해준다 - WM_SIZE가 불릴 때마다 Memory Leak이 있는지 확인하기 C++ Static의 사용처 3종류 - Global Variable: 누구나 사용할 수 있기에 일반적으로 사용을 비추천한다. - Local Variable: Local Persist - Local to file: 해당 파일에서만 사용할 수 있다. (internal) Reference - Official Lesson 더보기
[Handmade Hero] 002 - Opening a Win32 Window 현대 게임의 특징 - Rendering에 관한 모든 걸 GPU에 맡긴다. - GPU가 하는 일을 모른 채로 그냥 맡긴다. Handmade Hero 엔진의 특징 - GPU가 어떻게 일하는지 모르기때문에 직접 Win32 API를 이용해 Renderer를 만들어 사용한다. - 실제로 Rendering이 어떤 방식으로 이루어지는가 이해하기 위함. 오늘의 공부 Win32 지식 Basic Functions - WNDCLASS : 여러가지 기본 설정을 할 수 있는 function들을 사용하기위해 쓰인다. - WindowProc: Callback Function, 메시지를 받아서 실행한다.- RegisterClass: WNDCLASS를 통해 윈도우창을 열기 위해 필요한 Function.- CreateWindow: 여러.. 더보기
[Handmade Hero] 001 - Setting Up the Windows Build 기본 설정 - startup.bat @ C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup => Windows 시작시 가상 드라이브 실행 - build.bat (.exe파일을 빌드하기 위한 batch 파일) - shell.bat (비쥬얼 스튜디오 컴파일러를 사용하기 위한 batch 파일) - devenv \build\win32_handmade.exe (.sln 파일을 사용하기 위한 커맨드) - user32.lib -> MessageBox같은 function을 사용하기 위해 컴파일할 때 포함시켜야 한다. 개념 - CRT Library for C compiler - Import Library (Ex: user32.lib) -> 특정 Function을 .. 더보기
[Handmade Hero] Intro to C on Windows - Day 5 1. 코드 => 실행 프로그램까지의 과정source code to Executable- OBJ + LIB into Linker - Executable (Defined by Microsoft + Intel format)Exe File- Header - Fixup table (Call windows code) - Intel format code (Start running)2. Virtual MemoryPage- Divided into "page" (Physical) - Page Table - Each page has flags (Read, Write, Execute) - Page Fault - ICache for efficient CPU operation3. Shift Operator- Shift the b.. 더보기
[Handmade Hero] Intro to C on Windows - Day 4 1. Endian - High Order Byte Low Order Byte - DIsk에 있는 데이터 (이미지 오디오 등)을 어떻게 불러오는지 (Endian 유형)을 알아두어야한다. Little endian - Memory Layout: Low Order Byte comes first - Standard (x86, arm, x64) Big endian - Memory Layout: High Order Byte comes first - powerpc, xbox, playstation 2. Padding Byte struct projectilfe { char unsigned IsThisOnFire; int Damage; int ParticlesPerSecond; short HowManyCooks; } //.. 더보기

반응형