<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Game Engine on Cigarettes &amp; Coffee</title><link>https://cignc.dev/tags/game-engine/</link><description>Recent content in Game Engine on Cigarettes &amp; Coffee</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Sun, 17 May 2026 01:39:28 +0900</lastBuildDate><atom:link href="https://cignc.dev/tags/game-engine/index.xml" rel="self" type="application/rss+xml"/><item><title>🍪 Cookie Engine - 2. Graphics Basics</title><link>https://cignc.dev/posts/cookie-engine/2-graphics-basics/</link><pubDate>Sun, 17 May 2026 01:39:28 +0900</pubDate><guid>https://cignc.dev/posts/cookie-engine/2-graphics-basics/</guid><description>&lt;ul&gt;
&lt;li&gt;이전 글: &lt;a href="../1-sdl-and-opengl/"&gt;🍪 Cookie Engine - 1. SDL and OpenGL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="1-framebuffer-color-buffer-depth-buffer"&gt;1. Framebuffer, Color Buffer, Depth Buffer&lt;/h2&gt;
&lt;p&gt;화면에 보이는 이미지는 결국 픽셀들의 배열이다. OpenGL에서는 렌더링 결과가 frame buffer에 기록되는데, 기본적으로 SDL window에 연결된 기본 frame buffer가 있다.&lt;/p&gt;
&lt;p&gt;기본 framebuffer에는 보통 다음 buffer들이 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Color Buffer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Depth Buffer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stencil Buffer&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Color Buffer는 최종 색상이 저장되는 곳이고, Depth Buffer는 각 픽셀에 가장 가까운 물체의 깊이값이 저장되는 곳이다. Stencil Buffer는 마스크 처리 등에 사용된다.&lt;/p&gt;
&lt;p&gt;Sphere와 같은 3D 메시들은 앞쪽 삼각형과 뒤쪽 삼각형이 겹쳐 보일 수 있기 때문에 Depth Test 기능은 켜놓아야 한다.&lt;/p&gt;</description></item><item><title>🍪 Cookie Engine - 1. SDL and OpenGL</title><link>https://cignc.dev/posts/cookie-engine/1-sdl-and-opengl/</link><pubDate>Tue, 12 May 2026 03:27:06 +0900</pubDate><guid>https://cignc.dev/posts/cookie-engine/1-sdl-and-opengl/</guid><description>&lt;ul&gt;
&lt;li&gt;이전 글: &lt;a href="../0-introduction/"&gt;🍪 Cookie Engine - 0. Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;우리가 만들려는 첫 화면은 아주 단순하다.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;프로그램 시작
 -&amp;gt; SDL 초기화
 -&amp;gt; SDL 창 생성
 -&amp;gt; OpenGL context 생성
 -&amp;gt; GLAD로 OpenGL 함수 로딩
 -&amp;gt; GPU에 sphere 정점/인덱스 데이터 업로드
 -&amp;gt; 셰이더 생성
 -&amp;gt; 매 프레임 화면 지우기
 -&amp;gt; sphere draw call 호출
 -&amp;gt; 화면에 결과 출력
 -&amp;gt; 프로그램 종료 시 리소스 정리
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이 흐름을 계층적으로 조금 더 나누면 다음과 같다.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;platform layer
 -&amp;gt; SDL3 담당
 -&amp;gt; 창, 이벤트, 입력, OpenGL context 생성

graphics API layer
 -&amp;gt; OpenGL 담당
 -&amp;gt; GPU 리소스 생성, 셰이더, 버퍼, 렌더링 상태, draw call 담당

OpenGL loader layer
 -&amp;gt; GLAD 담당
 -&amp;gt; OpenGL 함수 포인터를 런타임에 가져옴
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;여기서 &lt;strong&gt;SDL&lt;/strong&gt;은 &lt;strong&gt;플랫폼 추상화 계층&lt;/strong&gt;이고, &lt;strong&gt;OpenGL&lt;/strong&gt;은 &lt;strong&gt;렌더링 API&lt;/strong&gt;다.&lt;/p&gt;</description></item><item><title>🍪 Cookie Engine - 0. Introduction</title><link>https://cignc.dev/posts/cookie-engine/0-introduction/</link><pubDate>Sat, 09 May 2026 20:36:16 +0900</pubDate><guid>https://cignc.dev/posts/cookie-engine/0-introduction/</guid><description>&lt;p&gt;보통 게임 개발이라고 하면 Unity나 Unreal Engine같은 상용 게임 엔진을 이용한 게임 클라이언트 개발을 생각한다. 상용 게임 엔진을 이용하여 게임을 개발하는 것은 게임의 내부 동작을 신경쓰지 않고 오로지 게임 로직만 신경쓰면 된다는 장점이 있지만, 게임 개발자를 꿈꾸는 한 명의 기술자로서 실제 내부 시스템이 동작하는 방법을 모른 채 게임 로직만 짠다는 것은 아쉬움이자 큰 약점이다.&lt;/p&gt;
&lt;p&gt;물론 먹고 살기 위해서 게임 개발을 공부한다면 당연히 상용 엔진 사용법을 공부하는 것이 더 낫다. 실제 현업에서 대부분의 개발은 상용 엔진 위에서 이루어지고, 생산성만 놓고 보면 직접 엔진을 만드는 것은 비효율적인 작업이다. 하지만 상용 엔진이 제공하는 기능을 그냥 있는 기능으로만 받아들이는 것과 그 기능이 내부에서 어떤 문제를 해결하기 위해 존재하는지 아는 것은 큰 차이가 있다.&lt;/p&gt;</description></item></channel></rss>