Handmade Hero»Episode Guide
XBox Controller Stalls and Fixing GL Blit Gamma
?
?

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:08Hype 4coder 4.0.2 super
0:08Hype 4coder 4.0.2 super
0:08Hype 4coder 4.0.2 super
2:36Recap and set the stage for the day
2:36Recap and set the stage for the day
2:36Recap and set the stage for the day
3:09Run the game and view the current state of the profiler
3:09Run the game and view the current state of the profiler
3:09Run the game and view the current state of the profiler
4:52handmade_debug.cpp: Review the profiling code
4:52handmade_debug.cpp: Review the profiling code
4:52handmade_debug.cpp: Review the profiling code
8:40handmade_debug.cpp: Note that we are using the EndClock value before it's been written
8:40handmade_debug.cpp: Note that we are using the EndClock value before it's been written
8:40handmade_debug.cpp: Note that we are using the EndClock value before it's been written
9:33handmade_debug.cpp: Compute that Duration in CollateDebugRecords and correctly set the ClockBasis
9:33handmade_debug.cpp: Compute that Duration in CollateDebugRecords and correctly set the ClockBasis
9:33handmade_debug.cpp: Compute that Duration in CollateDebugRecords and correctly set the ClockBasis
11:31Run the game and view our more plausible profile result
11:31Run the game and view our more plausible profile result
11:31Run the game and view our more plausible profile result
12:44handmade_debug.cpp: Reenable and rewrite the text on hover
12:44handmade_debug.cpp: Reenable and rewrite the text on hover
12:44handmade_debug.cpp: Reenable and rewrite the text on hover
13:38Run the game and view this text on hover
13:38Run the game and view this text on hover
13:38Run the game and view this text on hover
14:39Blackboard: Pointer alignment and random picking from an array
14:39Blackboard: Pointer alignment and random picking from an array
14:39Blackboard: Pointer alignment and random picking from an array
17:06handmade_debug.cpp: Make the Colors array be a non-multiple of four
17:06handmade_debug.cpp: Make the Colors array be a non-multiple of four
17:06handmade_debug.cpp: Make the Colors array be a non-multiple of four
17:47Run the game and see our different zones in the profiler
17:47Run the game and see our different zones in the profiler
17:47Run the game and see our different zones in the profiler
19:13handmade_render_group.cpp: Add SortBias to the object_transform so the SortKey automatically takes it into account
19:13handmade_render_group.cpp: Add SortBias to the object_transform so the SortKey automatically takes it into account
19:13handmade_render_group.cpp: Add SortBias to the object_transform so the SortKey automatically takes it into account
20:38On writing TODOsα
20:38On writing TODOsα
20:38On writing TODOsα
22:13handmade_debug.cpp: Introduce Transforms in DEBUGTextOp
22:13handmade_debug.cpp: Introduce Transforms in DEBUGTextOp
22:13handmade_debug.cpp: Introduce Transforms in DEBUGTextOp
23:51Run the game and note that our problem hasn't been fixed
23:51Run the game and note that our problem hasn't been fixed
23:51Run the game and note that our problem hasn't been fixed
24:13handmade_debug.h: Add Transforms to the debug_state
24:13handmade_debug.h: Add Transforms to the debug_state
24:13handmade_debug.h: Add Transforms to the debug_state
25:55handmade_debug.cpp: Initialise the Transforms in DEBUGStart
25:55handmade_debug.cpp: Initialise the Transforms in DEBUGStart
25:55handmade_debug.cpp: Initialise the Transforms in DEBUGStart
26:58handmade_debug.cpp: Pass BackingTransform to the PushRect calls in DrawProfileIn
26:58handmade_debug.cpp: Pass BackingTransform to the PushRect calls in DrawProfileIn
26:58handmade_debug.cpp: Pass BackingTransform to the PushRect calls in DrawProfileIn
28:27Run the game and view our profiler
28:27Run the game and view our profiler
28:27Run the game and view our profiler
29:31Blackboard: What the profiler is showing us may be happening after the point SwapBuffers is called
29:31Blackboard: What the profiler is showing us may be happening after the point SwapBuffers is called
29:31Blackboard: What the profiler is showing us may be happening after the point SwapBuffers is called
34:18Point out how useful profiling is
34:18Point out how useful profiling is
34:18Point out how useful profiling is
36:43win32_handmade.cpp: Investigate what's happening in our input processing
36:43win32_handmade.cpp: Investigate what's happening in our input processing
36:43win32_handmade.cpp: Investigate what's happening in our input processing
39:53Run the game and note that we need the ability to narrow in on a profile region
39:53Run the game and note that we need the ability to narrow in on a profile region
39:53Run the game and note that we need the ability to narrow in on a profile region
40:42win32_handmade.cpp: Comment out the "Input Processing" block
40:42win32_handmade.cpp: Comment out the "Input Processing" block
40:42win32_handmade.cpp: Comment out the "Input Processing" block
41:06Run the game and discover that the XBox controllers are taking 2,000,000 cycles to poll
41:06Run the game and discover that the XBox controllers are taking 2,000,000 cycles to poll
41:06Run the game and discover that the XBox controllers are taking 2,000,000 cycles to poll
41:54Describe and consider how to work around a well-known XInputGetState bug when polling XBox controllers
41:54Describe and consider how to work around a well-known XInputGetState bug when polling XBox controllers
41:54Describe and consider how to work around a well-known XInputGetState bug when polling XBox controllers
45:45win32_handmade.cpp: Introduce XBoxControllerPresent, assume they're all plugged in at startup and stop polling for them when we realise they're not
45:45win32_handmade.cpp: Introduce XBoxControllerPresent, assume they're all plugged in at startup and stop polling for them when we realise they're not
45:45win32_handmade.cpp: Introduce XBoxControllerPresent, assume they're all plugged in at startup and stop polling for them when we realise they're not
48:44Run the game and see none of that controller polling nonsense
48:44Run the game and see none of that controller polling nonsense
48:44Run the game and see none of that controller polling nonsense
50:05Discover that the software renderer does not draw the profiler properly
50:05Discover that the software renderer does not draw the profiler properly
50:05Discover that the software renderer does not draw the profiler properly
51:24handmade_opengl.cpp: Make glTexImage2D take GL_SRGB8_ALPHA8
51:24handmade_opengl.cpp: Make glTexImage2D take GL_SRGB8_ALPHA8
51:24handmade_opengl.cpp: Make glTexImage2D take GL_SRGB8_ALPHA8
52:45Run the game and see that that was the problem
52:45Run the game and see that that was the problem
52:45Run the game and see that that was the problem
53:40Explain how gamma is treated in the renderer
53:40Explain how gamma is treated in the renderer
53:40Explain how gamma is treated in the renderer
55:31Note that we need to reserve one texture at startup in case we would like to do OpenGL bitmap display
55:31Note that we need to reserve one texture at startup in case we would like to do OpenGL bitmap display
55:31Note that we need to reserve one texture at startup in case we would like to do OpenGL bitmap display
56:18Demo the bug with switching between the renderers
56:18Demo the bug with switching between the renderers
56:18Demo the bug with switching between the renderers
57:27win32_handmade.cpp: Introduce OpenGLReservedBlitTexture and set one of them Win32InitOpenGL
57:27win32_handmade.cpp: Introduce OpenGLReservedBlitTexture and set one of them Win32InitOpenGL
57:27win32_handmade.cpp: Introduce OpenGLReservedBlitTexture and set one of them Win32InitOpenGL
58:57Run the game and see that we now no longer have that bug, but do have a bug with pixel centers for the fonts
58:57Run the game and see that we now no longer have that bug, but do have a bug with pixel centers for the fonts
58:57Run the game and see that we now no longer have that bug, but do have a bug with pixel centers for the fonts
1:00:40Q&A
🗩
1:00:40Q&A
🗩
1:00:40Q&A
🗩
1:01:08cmuratori insobot What do you think of Microsoft's Tay bot?
🗪
1:01:08cmuratori insobot What do you think of Microsoft's Tay bot?
🗪
1:01:08cmuratori insobot What do you think of Microsoft's Tay bot?
🗪
1:01:22insobot cmuratori Oh wow. I guess i should say? Wow, thought i came
🗪
1:01:22insobot cmuratori Oh wow. I guess i should say? Wow, thought i came
🗪
1:01:22insobot cmuratori Oh wow. I guess i should say? Wow, thought i came
🗪
1:01:30garlandobloom Q: Can't remember what OpenGL considers the center of the pixel...?
🗪
1:01:30garlandobloom Q: Can't remember what OpenGL considers the center of the pixel...?
🗪
1:01:30garlandobloom Q: Can't remember what OpenGL considers the center of the pixel...?
🗪
1:02:50jameswidman Is romp just a synonym for clobber?
🗪
1:02:50jameswidman Is romp just a synonym for clobber?
🗪
1:02:50jameswidman Is romp just a synonym for clobber?
🗪
1:02:56zargy Will the opening cutscene be narrated?
🗪
1:02:56zargy Will the opening cutscene be narrated?
🗪
1:02:56zargy Will the opening cutscene be narrated?
🗪
1:03:12erdomina Could you elucidate further on the waiting for VSync in the profiler?
🗪
1:03:12erdomina Could you elucidate further on the waiting for VSync in the profiler?
🗪
1:03:12erdomina Could you elucidate further on the waiting for VSync in the profiler?
🗪
1:05:42cubercaleb I actually prefer the fonts that the software renderer produces. Is there anything we can do to make them look that way in GL?
🗪
1:05:42cubercaleb I actually prefer the fonts that the software renderer produces. Is there anything we can do to make them look that way in GL?
🗪
1:05:42cubercaleb I actually prefer the fonts that the software renderer produces. Is there anything we can do to make them look that way in GL?
🗪
1:06:36lailynn7 Recommended entry-level programming language for aspiring game devs?
🗪
1:06:36lailynn7 Recommended entry-level programming language for aspiring game devs?
🗪
1:06:36lailynn7 Recommended entry-level programming language for aspiring game devs?
🗪
1:10:54longboolean Is there anything that can be done to help make it easier to hover / click on the debug visualization?
🗪
1:10:54longboolean Is there anything that can be done to help make it easier to hover / click on the debug visualization?
🗪
1:10:54longboolean Is there anything that can be done to help make it easier to hover / click on the debug visualization?
🗪
1:12:06insobot popcorn0x90 You can implement most of it, replacing most of
🗪
1:12:06insobot popcorn0x90 You can implement most of it, replacing most of
🗪
1:12:06insobot popcorn0x90 You can implement most of it, replacing most of
🗪
1:12:13ginger_bill Are all the textures transferred every frame?
🗪
1:12:13ginger_bill Are all the textures transferred every frame?
🗪
1:12:13ginger_bill Are all the textures transferred every frame?
🗪
1:14:40cubercaleb In the debug UI will we be able to click on a frame and have it blit that frame?
🗪
1:14:40cubercaleb In the debug UI will we be able to click on a frame and have it blit that frame?
🗪
1:14:40cubercaleb In the debug UI will we be able to click on a frame and have it blit that frame?
🗪
1:15:42xxmyrrdinxx Could you explain in what consist the dynamic resolution? Texture rescale, viewport rescale?
🗪
1:15:42xxmyrrdinxx Could you explain in what consist the dynamic resolution? Texture rescale, viewport rescale?
🗪
1:15:42xxmyrrdinxx Could you explain in what consist the dynamic resolution? Texture rescale, viewport rescale?
🗪
1:16:16dudeinbasement1 Are we going to have it auto-pause on long frames?
🗪
1:16:16dudeinbasement1 Are we going to have it auto-pause on long frames?
🗪
1:16:16dudeinbasement1 Are we going to have it auto-pause on long frames?
🗪
1:16:38hwd2ro What about checking for memory leaks?
🗪
1:16:38hwd2ro What about checking for memory leaks?
🗪
1:16:38hwd2ro What about checking for memory leaks?
🗪
1:17:38zach211w At what point would you make the transition from a more basic language like JavaScript over to a language like C?
🗪
1:17:38zach211w At what point would you make the transition from a more basic language like JavaScript over to a language like C?
🗪
1:17:38zach211w At what point would you make the transition from a more basic language like JavaScript over to a language like C?
🗪
1:21:55dudeinbasement1 Sorry, have a fail-safe to see when we stutter to pause the system and debug it
🗪
1:21:55dudeinbasement1 Sorry, have a fail-safe to see when we stutter to pause the system and debug it
🗪
1:21:55dudeinbasement1 Sorry, have a fail-safe to see when we stutter to pause the system and debug it
🗪
1:23:05Close
🗩
1:23:05Close
🗩
1:23:05Close
🗩
1:24:02Promote 4coder
🗩
1:24:02Promote 4coder
🗩
1:24:02Promote 4coder
🗩