Handmade Hero»Episode Guide
Getting a Graphics Debugger Working
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
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 Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

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:02Welcome to the new setup
0:02Welcome to the new setup
0:02Welcome to the new setup
3:08Open up and begin to reacquaint ourselves with the code
3:08Open up and begin to reacquaint ourselves with the code
3:08Open up and begin to reacquaint ourselves with the code
4:18Run the game to see that it is running correctly, but with weird artifacts
4:18Run the game to see that it is running correctly, but with weird artifacts
4:18Run the game to see that it is running correctly, but with weird artifacts
5:40handmade_render_group.cpp: Continue to reacquaint ourselves with the lighting code
5:40handmade_render_group.cpp: Continue to reacquaint ourselves with the lighting code
5:40handmade_render_group.cpp: Continue to reacquaint ourselves with the lighting code
18:19handmade_platform.h: Describe the lighting_textures struct, from where we left off
18:19handmade_platform.h: Describe the lighting_textures struct, from where we left off
18:19handmade_platform.h: Describe the lighting_textures struct, from where we left off
22:08handmade_world_mode.cpp: Check our hotkeys
22:08handmade_world_mode.cpp: Check our hotkeys
22:08handmade_world_mode.cpp: Check our hotkeys
23:14Run the game and toggle on the lighting solution
23:14Run the game and toggle on the lighting solution
23:14Run the game and toggle on the lighting solution
24:27handmade_opengl.cpp: Make CompileZBiasProgram() set UseLightC to 1, 0, 0
24:27handmade_opengl.cpp: Make CompileZBiasProgram() set UseLightC to 1, 0, 0
24:27handmade_opengl.cpp: Make CompileZBiasProgram() set UseLightC to 1, 0, 0
26:08Run the game to see red
26:08Run the game to see red
26:08Run the game to see red
26:58Graphics debuggers
26:58Graphics debuggers
26:58Graphics debuggers
29:47Run our game in RenderDoc
29:47Run our game in RenderDoc
29:47Run our game in RenderDoc
35:39Install Nsight and update the graphics driver1
35:39Install Nsight and update the graphics driver1
35:39Install Nsight and update the graphics driver1
48:21Run our game with the Nsight HUD enabled, try to capture a frame but remain stuck in the HUD
48:21Run our game with the Nsight HUD enabled, try to capture a frame but remain stuck in the HUD
48:21Run our game with the Nsight HUD enabled, try to capture a frame but remain stuck in the HUD
53:56Inspect our captured rendering data
53:56Inspect our captured rendering data
53:56Inspect our captured rendering data
57:07Try to capture a frame with the game window not fullscreen
57:07Try to capture a frame with the game window not fullscreen
57:07Try to capture a frame with the game window not fullscreen
59:58Inspect our shader data
59:58Inspect our shader data
59:58Inspect our shader data
1:03:08handmade_opengl.cpp: VoxMinCorner and VoxInvCelDim
1:03:08handmade_opengl.cpp: VoxMinCorner and VoxInvCelDim
1:03:08handmade_opengl.cpp: VoxMinCorner and VoxInvCelDim
1:04:05Run the game, toggle on the lighting, try to Alt-Tab to Visual Studio and crash in Win32ProcessPendingMessages()
1:04:05Run the game, toggle on the lighting, try to Alt-Tab to Visual Studio and crash in Win32ProcessPendingMessages()
1:04:05Run the game, toggle on the lighting, try to Alt-Tab to Visual Studio and crash in Win32ProcessPendingMessages()
1:06:29build.bat: Remove the HANDMADE_STREAMING workaround
1:06:29build.bat: Remove the HANDMADE_STREAMING workaround
1:06:29build.bat: Remove the HANDMADE_STREAMING workaround
1:09:13Run the game, crash in the same manner in Win32ProcessPendingMessages() and investigate why
1:09:13Run the game, crash in the same manner in Win32ProcessPendingMessages() and investigate why
1:09:13Run the game, crash in the same manner in Win32ProcessPendingMessages() and investigate why
1:19:42Read the disassembly in the TIMED_BLOCK PeekMessage, and guess that our debug events are piling up and overflowing
1:19:42Read the disassembly in the TIMED_BLOCK PeekMessage, and guess that our debug events are piling up and overflowing
1:19:42Read the disassembly in the TIMED_BLOCK PeekMessage, and guess that our debug events are piling up and overflowing
1:23:31build.bat: Toggle off HANDMADE_INTERNAL and run the game without problem
1:23:31build.bat: Toggle off HANDMADE_INTERNAL and run the game without problem
1:23:31build.bat: Toggle off HANDMADE_INTERNAL and run the game without problem
1:26:30Investigate our debug events overflow
1:26:30Investigate our debug events overflow
1:26:30Investigate our debug events overflow
1:29:29win32_handmade.cpp: Count our loops through TIMED_BLOCK("PeekMesssage") in Win32ProcessPendingMessages()
1:29:29win32_handmade.cpp: Count our loops through TIMED_BLOCK("PeekMesssage") in Win32ProcessPendingMessages()
1:29:29win32_handmade.cpp: Count our loops through TIMED_BLOCK("PeekMesssage") in Win32ProcessPendingMessages()
1:32:12Find a massive number of messages
1:32:12Find a massive number of messages
1:32:12Find a massive number of messages
1:34:16win32_handmade.cpp: Buffer up our messages
1:34:16win32_handmade.cpp: Buffer up our messages
1:34:16win32_handmade.cpp: Buffer up our messages
1:35:20Find that all those messages are 0x738, and try to identify that message
1:35:20Find that all those messages are 0x738, and try to identify that message
1:35:20Find that all those messages are 0x738, and try to identify that message
1:39:25Describe WM_USER
1:39:25Describe WM_USER
1:39:25Describe WM_USER
1:41:02Launch Spy++
1:41:02Launch Spy++
1:41:02Launch Spy++
1:45:26Use Spy++ to try and determine who is issuing the 0x738 messages
1:45:26Use Spy++ to try and determine who is issuing the 0x738 messages
1:45:26Use Spy++ to try and determine who is issuing the 0x738 messages
1:52:37Reflect on the situation
1:52:37Reflect on the situation
1:52:37Reflect on the situation
1:58:50win32_handmade.cpp: Temporarily prevent Win32ProcessPendingMessages() from calling TIMED_BLOCK("PeekMessage")
1:58:50win32_handmade.cpp: Temporarily prevent Win32ProcessPendingMessages() from calling TIMED_BLOCK("PeekMessage")
1:58:50win32_handmade.cpp: Temporarily prevent Win32ProcessPendingMessages() from calling TIMED_BLOCK("PeekMessage")
1:59:34Run the game to find that we avoid the crash
1:59:34Run the game to find that we avoid the crash
1:59:34Run the game to find that we avoid the crash
2:01:01Q&A
🗩
2:01:01Q&A
🗩
2:01:01Q&A
🗩
2:01:46bestalloys Regarding message 0x7382
🗪
2:01:46bestalloys Regarding message 0x7382
🗪
2:01:46bestalloys Regarding message 0x7382
🗪
2:05:34win32_handmade.cpp: Make Win32ProcessPendingMessages() skip the 0x738 message
2:05:34win32_handmade.cpp: Make Win32ProcessPendingMessages() skip the 0x738 message
2:05:34win32_handmade.cpp: Make Win32ProcessPendingMessages() skip the 0x738 message
2:09:00Run the game without crashing
2:09:00Run the game without crashing
2:09:00Run the game without crashing
2:11:35Consult our rendering data
2:11:35Consult our rendering data
2:11:35Consult our rendering data
2:13:28abarishu What do you mean by "generated" message?
🗪
2:13:28abarishu What do you mean by "generated" message?
🗪
2:13:28abarishu What do you mean by "generated" message?
🗪
2:15:36uplinkcoder This seems to be a known big since Windows 10 build 1703
🗪
2:15:36uplinkcoder This seems to be a known big since Windows 10 build 1703
🗪
2:15:36uplinkcoder This seems to be a known big since Windows 10 build 1703
🗪
2:16:23resantic How is the performance of the from-scratch-written renderer compared to OpenGL?
🗪
2:16:23resantic How is the performance of the from-scratch-written renderer compared to OpenGL?
🗪
2:16:23resantic How is the performance of the from-scratch-written renderer compared to OpenGL?
🗪
2:16:37vaualbus How in 4coder you make it possible to have typedef highlight?
🗪
2:16:37vaualbus How in 4coder you make it possible to have typedef highlight?
🗪
2:16:37vaualbus How in 4coder you make it possible to have typedef highlight?
🗪
2:17:25khrob If this has been answered many times, I’ll dig back through YouTube, but when and why did Handmade Hero move from being a fully software rendered project to using graphics APIs?
🗪
2:17:25khrob If this has been answered many times, I’ll dig back through YouTube, but when and why did Handmade Hero move from being a fully software rendered project to using graphics APIs?
🗪
2:17:25khrob If this has been answered many times, I’ll dig back through YouTube, but when and why did Handmade Hero move from being a fully software rendered project to using graphics APIs?
🗪
2:18:33sahfortv Any chance to run the game with the lighting actually on, just for old time's sake?
🗪
2:18:33sahfortv Any chance to run the game with the lighting actually on, just for old time's sake?
🗪
2:18:33sahfortv Any chance to run the game with the lighting actually on, just for old time's sake?
🗪
2:18:39dautor How would you cast a pointer and call it directly without an extra typedef?
🗪
2:18:39dautor How would you cast a pointer and call it directly without an extra typedef?
🗪
2:18:39dautor How would you cast a pointer and call it directly without an extra typedef?
🗪
2:20:19resantic How about 2D? How is the performance there?
🗪
2:20:19resantic How about 2D? How is the performance there?
🗪
2:20:19resantic How about 2D? How is the performance there?
🗪
2:20:36dautor Function pointer, yeah
🗪
2:20:36dautor Function pointer, yeah
🗪
2:20:36dautor Function pointer, yeah
🗪
2:20:40Demo calling a function pointer without making a typedef
2:20:40Demo calling a function pointer without making a typedef
2:20:40Demo calling a function pointer without making a typedef
2:25:04Blackboard: Mathematical operator precedence, and Dijkstra's shunting yard algorithm
2:25:04Blackboard: Mathematical operator precedence, and Dijkstra's shunting yard algorithm
2:25:04Blackboard: Mathematical operator precedence, and Dijkstra's shunting yard algorithm
2:30:04Blackboard: Abstract syntax tree
2:30:04Blackboard: Abstract syntax tree
2:30:04Blackboard: Abstract syntax tree
2:32:37Blackboard: Parsing a cast expression into an abstract syntax tree
2:32:37Blackboard: Parsing a cast expression into an abstract syntax tree
2:32:37Blackboard: Parsing a cast expression into an abstract syntax tree
2:34:07Blackboard: Understanding the function pointer cast
2:34:07Blackboard: Understanding the function pointer cast
2:34:07Blackboard: Understanding the function pointer cast
2:43:48dautor I was doing some compiler things a few months ago. Could a parser programming (maybe operator parsing only) stream?
🗪
2:43:48dautor I was doing some compiler things a few months ago. Could a parser programming (maybe operator parsing only) stream?
🗪
2:43:48dautor I was doing some compiler things a few months ago. Could a parser programming (maybe operator parsing only) stream?
🗪
2:44:17popcorn0x90 Can you explain how you would fix some stuff such as the fog in PUBG someday? Maybe like a 9-hour lecture?
🗪
2:44:17popcorn0x90 Can you explain how you would fix some stuff such as the fog in PUBG someday? Maybe like a 9-hour lecture?
🗪
2:44:17popcorn0x90 Can you explain how you would fix some stuff such as the fog in PUBG someday? Maybe like a 9-hour lecture?
🗪
2:44:31rytzale What "blackboard" program are you using?3
🗪
2:44:31rytzale What "blackboard" program are you using?3
🗪
2:44:31rytzale What "blackboard" program are you using?3
🗪
2:45:20A few words on C's type definition syntax
🗩
2:45:20A few words on C's type definition syntax
🗩
2:45:20A few words on C's type definition syntax
🗩
2:48:02Wrap it up
🗩
2:48:02Wrap it up
🗩
2:48:02Wrap it up
🗩