Handmade Hero»Episode Guide
Finishing Asynchronous Texture Downloads
?
?

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:55Build and run the game and note that our textures don't get downloaded
0:55Build and run the game and note that our textures don't get downloaded
0:55Build and run the game and note that our textures don't get downloaded
1:32Set the stage for the day with some thoughts on writing software from scratch and the occasional need to use systems which are black boxes
1:32Set the stage for the day with some thoughts on writing software from scratch and the occasional need to use systems which are black boxes
1:32Set the stage for the day with some thoughts on writing software from scratch and the occasional need to use systems which are black boxes
5:15Debugger: Take a stroll through our new OpenGL code
5:15Debugger: Take a stroll through our new OpenGL code
5:15Debugger: Take a stroll through our new OpenGL code
9:08win32_handmade.cpp: Make Win32InitOpenGL return an HGLRC
9:08win32_handmade.cpp: Make Win32InitOpenGL return an HGLRC
9:08win32_handmade.cpp: Make Win32InitOpenGL return an HGLRC
12:20Debugger: Step into Win32InitOpenGL and consider creating the OpenGL context outside of the queue
12:20Debugger: Step into Win32InitOpenGL and consider creating the OpenGL context outside of the queue
12:20Debugger: Step into Win32InitOpenGL and consider creating the OpenGL context outside of the queue
13:46win32_handmade.cpp: Claim the Window as a CS_OWNDC
13:46win32_handmade.cpp: Claim the Window as a CS_OWNDC
13:46win32_handmade.cpp: Claim the Window as a CS_OWNDC
14:25Debugger: Step into Win32CreateOpenGLContextForWorkerThread
14:25Debugger: Step into Win32CreateOpenGLContextForWorkerThread
14:25Debugger: Step into Win32CreateOpenGLContextForWorkerThread
15:20Explain what is happening in the debugger while two threads are initialising OpenGL
15:20Explain what is happening in the debugger while two threads are initialising OpenGL
15:20Explain what is happening in the debugger while two threads are initialising OpenGL
19:14win32_handmade.cpp: Assert if wglMakeCurrent fails
19:14win32_handmade.cpp: Assert if wglMakeCurrent fails
19:14win32_handmade.cpp: Assert if wglMakeCurrent fails
19:52Run the game and note that we never hit that assertion
19:52Run the game and note that we never hit that assertion
19:52Run the game and note that we never hit that assertion
20:33Debugger: Step through Win32AllocateTexture
20:33Debugger: Step through Win32AllocateTexture
20:33Debugger: Step through Win32AllocateTexture
21:48handmade_asset.cpp: Set FinalizeOperation to FinalizeAsset_Bitmap
21:48handmade_asset.cpp: Set FinalizeOperation to FinalizeAsset_Bitmap
21:48handmade_asset.cpp: Set FinalizeOperation to FinalizeAsset_Bitmap
22:32win32_handmade.cpp: Put in the pointers to AllocateTexture and DeallocateTexture
22:32win32_handmade.cpp: Put in the pointers to AllocateTexture and DeallocateTexture
22:32win32_handmade.cpp: Put in the pointers to AllocateTexture and DeallocateTexture
23:05Debugger: Step through Win32AllocateTexture and see the game correctly rendering in hardware
23:05Debugger: Step through Win32AllocateTexture and see the game correctly rendering in hardware
23:05Debugger: Step through Win32AllocateTexture and see the game correctly rendering in hardware
26:06"I don't know how that ended up working"α
26:06"I don't know how that ended up working"α
26:06"I don't know how that ended up working"α
26:38Mention the fact that there's no synchronisation between the texture downloading and the rendering, and describe our goal with regard to failure cases
26:38Mention the fact that there's no synchronisation between the texture downloading and the rendering, and describe our goal with regard to failure cases
26:38Mention the fact that there's no synchronisation between the texture downloading and the rendering, and describe our goal with regard to failure cases
33:16handmade_opengl.cpp: Explain the importance of gamma correction
33:16handmade_opengl.cpp: Explain the importance of gamma correction
33:16handmade_opengl.cpp: Explain the importance of gamma correction
36:13handmade_opengl.cpp: Explain why there are two separate enables for sRGB
36:13handmade_opengl.cpp: Explain why there are two separate enables for sRGB
36:13handmade_opengl.cpp: Explain why there are two separate enables for sRGB
38:20Internet: Consult the OpenGL docs1,2
38:20Internet: Consult the OpenGL docs1,2
38:20Internet: Consult the OpenGL docs1,2
45:04win32_handmade.cpp: typedef these WINAPI wgl_ functions and enable the extensions in Win32InitOpenGL
45:04win32_handmade.cpp: typedef these WINAPI wgl_ functions and enable the extensions in Win32InitOpenGL
45:04win32_handmade.cpp: typedef these WINAPI wgl_ functions and enable the extensions in Win32InitOpenGL
1:08:48Q&A
🗩
1:08:48Q&A
🗩
1:08:48Q&A
🗩
1:09:10yoonfan Don't you have a race condition according to the C11 and C++11 memory models when you set the texture handle from the worker thread and read it on the rendering thread without any synchronization? I think you need to use an atomic operation or the compiler could mess up the generated code
🗪
1:09:10yoonfan Don't you have a race condition according to the C11 and C++11 memory models when you set the texture handle from the worker thread and read it on the rendering thread without any synchronization? I think you need to use an atomic operation or the compiler could mess up the generated code
🗪
1:09:10yoonfan Don't you have a race condition according to the C11 and C++11 memory models when you set the texture handle from the worker thread and read it on the rendering thread without any synchronization? I think you need to use an atomic operation or the compiler could mess up the generated code
🗪
1:10:43cubercaleb Why don't you render directly to the backbuffer at Molly?
🗪
1:10:43cubercaleb Why don't you render directly to the backbuffer at Molly?
🗪
1:10:43cubercaleb Why don't you render directly to the backbuffer at Molly?
🗪
1:14:20brokenopcode FYI, no you can't change pixel format once it's been set. Need to create a temp window & context, get the wgl*arb function pointers, then destroy context & window and create new window and context with wgl*arb. Very annoying but that's how it works on windows as far as I know
🗪
1:14:20brokenopcode FYI, no you can't change pixel format once it's been set. Need to create a temp window & context, get the wgl*arb function pointers, then destroy context & window and create new window and context with wgl*arb. Very annoying but that's how it works on windows as far as I know
🗪
1:14:20brokenopcode FYI, no you can't change pixel format once it's been set. Need to create a temp window & context, get the wgl*arb function pointers, then destroy context & window and create new window and context with wgl*arb. Very annoying but that's how it works on windows as far as I know
🗪
1:15:09Zamar037 Will we be back to the debug code and finish it up after this, or have we finished it now?
🗪
1:15:09Zamar037 Will we be back to the debug code and finish it up after this, or have we finished it now?
🗪
1:15:09Zamar037 Will we be back to the debug code and finish it up after this, or have we finished it now?
🗪
1:15:23cubercaleb Thanks for the in depth explanation. Will you be going over modern GL later?
🗪
1:15:23cubercaleb Thanks for the in depth explanation. Will you be going over modern GL later?
🗪
1:15:23cubercaleb Thanks for the in depth explanation. Will you be going over modern GL later?
🗪
1:17:15garryjohanson Apparently in DirectX 12 you can select a separate context for different GPUs
🗪
1:17:15garryjohanson Apparently in DirectX 12 you can select a separate context for different GPUs
🗪
1:17:15garryjohanson Apparently in DirectX 12 you can select a separate context for different GPUs
🗪
1:18:10gasto5 Where did you upload the 4coder videos?
🗪
1:18:10gasto5 Where did you upload the 4coder videos?
🗪
1:18:10gasto5 Where did you upload the 4coder videos?
🗪
1:18:33d7samurai Yes, D3D11, too
🗪
1:18:33d7samurai Yes, D3D11, too
🗪
1:18:33d7samurai Yes, D3D11, too
🗪
1:18:58cubercaleb Couldn't you also use a PBO for streaming in textures?
🗪
1:18:58cubercaleb Couldn't you also use a PBO for streaming in textures?
🗪
1:18:58cubercaleb Couldn't you also use a PBO for streaming in textures?
🗪
1:20:35Wrap it up
🗩
1:20:35Wrap it up
🗩
1:20:35Wrap it up
🗩