Separating the Renderer Completely (Part 1)
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00“Welcome to Handmade Hero, the game where we code a complete show on stream”α
🗩
0:00“Welcome to Handmade Hero, the game where we code a complete show on stream”α
🗩
0:00“Welcome to Handmade Hero, the game where we code a complete show on stream”α
🗩
0:12Set up for the special two-stream day separating out and finalising the renderer for use in a new project
🗩
0:12Set up for the special two-stream day separating out and finalising the renderer for use in a new project
🗩
0:12Set up for the special two-stream day separating out and finalising the renderer for use in a new project
🗩
4:44Determine to perform Snuffleupagus-Oriented Programming, creating our dream sample program to drive API development
🗩
4:44Determine to perform Snuffleupagus-Oriented Programming, creating our dream sample program to drive API development
🗩
4:44Determine to perform Snuffleupagus-Oriented Programming, creating our dream sample program to drive API development
🗩
6:26Add a renderer test bed compilation line to build.bat
🗹
6:26Add a renderer test bed compilation line to build.bat
🗹
6:26Add a renderer test bed compilation line to build.bat
🗹
8:34Create win32_renderer_test.cpp as a trimmed down version of Handmade Hero's Windows platform layer1
8:34Create win32_renderer_test.cpp as a trimmed down version of Handmade Hero's Windows platform layer1
8:34Create win32_renderer_test.cpp as a trimmed down version of Handmade Hero's Windows platform layer1
19:43Create handmade_types.h, replacing global_variable with global
19:43Create handmade_types.h, replacing global_variable with global
19:43Create handmade_types.h, replacing global_variable with global
24:10Run the game just as normal
🏃
24:10Run the game just as normal
🏃
24:10Run the game just as normal
🏃
24:18Set up new win32_renderer_test project
🗹
24:18Set up new win32_renderer_test project
🗹
24:18Set up new win32_renderer_test project
🗹
27:51Run Handmade Hero Renderer Test to see nothing happen, as expected
🏃
27:51Run Handmade Hero Renderer Test to see nothing happen, as expected
🏃
27:51Run Handmade Hero Renderer Test to see nothing happen, as expected
🏃
28:04Incorporate a trimmed down Win32ProcessPendingMessages() in to win32_renderer_test.cpp
28:04Incorporate a trimmed down Win32ProcessPendingMessages() in to win32_renderer_test.cpp
28:04Incorporate a trimmed down Win32ProcessPendingMessages() in to win32_renderer_test.cpp
29:22Run the Renderer Test and successfully resize and close the window
🏃
29:22Run the Renderer Test and successfully resize and close the window
🏃
29:22Run the Renderer Test and successfully resize and close the window
🏃
29:36Create win32_handmade_opengl.cpp to consolidate all our OpenGL code
29:36Create win32_handmade_opengl.cpp to consolidate all our OpenGL code
29:36Create win32_handmade_opengl.cpp to consolidate all our OpenGL code
39:11Temporarily make win32_renderer_test.cpp use stdio.h string functions in place of the game's custom ones2
39:11Temporarily make win32_renderer_test.cpp use stdio.h string functions in place of the game's custom ones2
39:11Temporarily make win32_renderer_test.cpp use stdio.h string functions in place of the game's custom ones2
43:16Continue to consolidate our types and OpenGL code
43:16Continue to consolidate our types and OpenGL code
43:16Continue to consolidate our types and OpenGL code
48:18Include handmade_math.h and handmade_intrinsics.h in win32_renderer_test.cpp
🗹
48:18Include handmade_math.h and handmade_intrinsics.h in win32_renderer_test.cpp
🗹
48:18Include handmade_math.h and handmade_intrinsics.h in win32_renderer_test.cpp
🗹
53:05Create handmade_software_renderer.cpp to contain all the software renderer code
🗹
53:05Create handmade_software_renderer.cpp to contain all the software renderer code
🗹
53:05Create handmade_software_renderer.cpp to contain all the software renderer code
🗹
56:33Rename our render files in a more organised fashion
🗹
56:33Rename our render files in a more organised fashion
🗹
56:33Rename our render files in a more organised fashion
🗹
58:36Merge handmade_render.{cpp,h} and handmade_render_group.{cpp,h} into handmade_renderer.{cpp,h}
🗹
58:36Merge handmade_render.{cpp,h} and handmade_render_group.{cpp,h} into handmade_renderer.{cpp,h}
🗹
58:36Merge handmade_render.{cpp,h} and handmade_render_group.{cpp,h} into handmade_renderer.{cpp,h}
🗹
1:05:09Run the game okay
🏃
1:05:09Run the game okay
🏃
1:05:09Run the game okay
🏃
1:05:26Pull out the parts of the renderer that are wedded to the platform layer
1:05:26Pull out the parts of the renderer that are wedded to the platform layer
1:05:26Pull out the parts of the renderer that are wedded to the platform layer
1:11:51Temporarily make win32_renderer_test.cpp use further stdio.h string functions in place of the game's custom ones3
1:11:51Temporarily make win32_renderer_test.cpp use further stdio.h string functions in place of the game's custom ones3
1:11:51Temporarily make win32_renderer_test.cpp use further stdio.h string functions in place of the game's custom ones3
1:16:39Consider cleaning up the lighting box data
1:16:39Consider cleaning up the lighting box data
1:16:39Consider cleaning up the lighting box data
1:21:52Return from OBS crash
🗹
🗩
1:21:52Return from OBS crash
🗹
🗩
1:21:52Return from OBS crash
🗹
🗩
1:22:09Move the LightBoxes from game_render_commands to render_group and relieve the operating system of allocating them for us
1:22:09Move the LightBoxes from game_render_commands to render_group and relieve the operating system of allocating them for us
1:22:09Move the LightBoxes from game_render_commands to render_group and relieve the operating system of allocating them for us
1:31:43Prevent PushLighting() from being called twice, also moving handmade_render.{cpp,h} and handmade_render_group.{cpp,h} into the "retired" directory
🗹
1:31:43Prevent PushLighting() from being called twice, also moving handmade_render.{cpp,h} and handmade_render_group.{cpp,h} into the "retired" directory
🗹
1:31:43Prevent PushLighting() from being called twice, also moving handmade_render.{cpp,h} and handmade_render_group.{cpp,h} into the "retired" directory
🗹
1:35:12Run the game to see the lighting working just fine
🏃
1:35:12Run the game to see the lighting working just fine
🏃
1:35:12Run the game to see the lighting working just fine
🏃
1:35:48Determine to generalise texture management
🗩
1:35:48Determine to generalise texture management
🗩
1:35:48Determine to generalise texture management
🗩
1:37:29Change win32_renderer_test.cpp to be OpenGL only
1:37:29Change win32_renderer_test.cpp to be OpenGL only
1:37:29Change win32_renderer_test.cpp to be OpenGL only
1:41:04Set up to test the OpenGL memory allocation
🗩
1:41:04Set up to test the OpenGL memory allocation
🗩
1:41:04Set up to test the OpenGL memory allocation
🗩
1:42:32Enable win32_renderer_test.cpp to allocate OpenGL buffers
1:42:32Enable win32_renderer_test.cpp to allocate OpenGL buffers
1:42:32Enable win32_renderer_test.cpp to allocate OpenGL buffers
1:46:16Step through win32_renderer_test.cpp to see that all is okay
🏃
1:46:16Step through win32_renderer_test.cpp to see that all is okay
🏃
1:46:16Step through win32_renderer_test.cpp to see that all is okay
🏃
1:49:45Make win32_renderer_test.cpp call PushFullClear() and hit the situation where we need to talk to the renderer
1:49:45Make win32_renderer_test.cpp call PushFullClear() and hit the situation where we need to talk to the renderer
1:49:45Make win32_renderer_test.cpp call PushFullClear() and hit the situation where we need to talk to the renderer
1:52:42Q&A
🗩
1:52:42Q&A
🗩
1:52:42Q&A
🗩
1:53:24jim0_o Q: Are you going to check the recording that ended in an app crash?
🗪
1:53:24jim0_o Q: Are you going to check the recording that ended in an app crash?
🗪
1:53:24jim0_o Q: Are you going to check the recording that ended in an app crash?
🗪
1:54:17genos3 Q: Is Vulkan worthwhile for the performance gain over OpenGL?
🗪
1:54:17genos3 Q: Is Vulkan worthwhile for the performance gain over OpenGL?
🗪
1:54:17genos3 Q: Is Vulkan worthwhile for the performance gain over OpenGL?
🗪
1:55:32sratke Q: Will you take this opportunity to implement the d3d backend?
🗪
1:55:32sratke Q: Will you take this opportunity to implement the d3d backend?
🗪
1:55:32sratke Q: Will you take this opportunity to implement the d3d backend?
🗪
1:56:06frostyninja How long is lunch break?
🗪
1:56:06frostyninja How long is lunch break?
🗪
1:56:06frostyninja How long is lunch break?
🗪
1:56:23genos3 Q: Are there practical solutions to reducing the fill rate in the software renderer?
🗪
1:56:23genos3 Q: Are there practical solutions to reducing the fill rate in the software renderer?
🗪
1:56:23genos3 Q: Are there practical solutions to reducing the fill rate in the software renderer?
🗪
1:56:59uplinkcoder Q: Isn't every graphics API just a middleman?
🗪
1:56:59uplinkcoder Q: Isn't every graphics API just a middleman?
🗪
1:56:59uplinkcoder Q: Isn't every graphics API just a middleman?
🗪
1:59:04joesweeney Q: How do you recommend a beginner get better at writing platform layers? Is the only way to just write a bunch of them to figure out the common patterns?
🗪
1:59:04joesweeney Q: How do you recommend a beginner get better at writing platform layers? Is the only way to just write a bunch of them to figure out the common patterns?
🗪
1:59:04joesweeney Q: How do you recommend a beginner get better at writing platform layers? Is the only way to just write a bunch of them to figure out the common patterns?
🗪
1:59:24Rounin Q: I'm one of the Linux people. Please don't give us Vulkan
🗪
1:59:24Rounin Q: I'm one of the Linux people. Please don't give us Vulkan
🗪
1:59:24Rounin Q: I'm one of the Linux people. Please don't give us Vulkan
🗪
2:00:53Close it down for a timezone-appropriate meal
🗩
2:00:53Close it down for a timezone-appropriate meal
🗩
2:00:53Close it down for a timezone-appropriate meal
🗩