Handmade Hero»Episode Guide
Rendering the Game Through OpenGL
?
?

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:08Recap and set the stage for the day
0:08Recap and set the stage for the day
0:08Recap and set the stage for the day
1:26handmade_opengl.cpp: Look at the new hardware rendering code and consider how to enable the renderer to work through software as well as hardware
1:26handmade_opengl.cpp: Look at the new hardware rendering code and consider how to enable the renderer to work through software as well as hardware
1:26handmade_opengl.cpp: Look at the new hardware rendering code and consider how to enable the renderer to work through software as well as hardware
5:41handmade_render_group.cpp: Introduce RenderToOutput to pick whether to render with OpenGLRenderGroupToOutput or TiledRenderGroupToOutput
5:41handmade_render_group.cpp: Introduce RenderToOutput to pick whether to render with OpenGLRenderGroupToOutput or TiledRenderGroupToOutput
5:41handmade_render_group.cpp: Introduce RenderToOutput to pick whether to render with OpenGLRenderGroupToOutput or TiledRenderGroupToOutput
10:17handmade_platform.h: typedef platform_opengl_render and add *RenderToOpenGL to platform_api
10:17handmade_platform.h: typedef platform_opengl_render and add *RenderToOpenGL to platform_api
10:17handmade_platform.h: typedef platform_opengl_render and add *RenderToOpenGL to platform_api
11:29Leave it as a little bit of a zygoteα
11:29Leave it as a little bit of a zygoteα
11:29Leave it as a little bit of a zygoteα
11:44handmade_opengl.cpp: Make RenderGroupToOutput only take *RenderGroup
11:44handmade_opengl.cpp: Make RenderGroupToOutput only take *RenderGroup
11:44handmade_opengl.cpp: Make RenderGroupToOutput only take *RenderGroup
12:41Run the game and wonder how THAT just happenedβ
12:41Run the game and wonder how THAT just happenedβ
12:41Run the game and wonder how THAT just happenedβ
13:09Debugger: Step into GameUpdate and realise that we're using the old function
13:09Debugger: Step into GameUpdate and realise that we're using the old function
13:09Debugger: Step into GameUpdate and realise that we're using the old function
14:09Run the game again and hit a first-chance exception
14:09Run the game again and hit a first-chance exception
14:09Run the game again and hit a first-chance exception
14:16win32_handmade.cpp: #include "handmade_opengl.cpp"
14:16win32_handmade.cpp: #include "handmade_opengl.cpp"
14:16win32_handmade.cpp: #include "handmade_opengl.cpp"
15:14handmade_opengl.cpp: Make OpenGLRenderGroupToOutput take *OutputTarget
15:14handmade_opengl.cpp: Make OpenGLRenderGroupToOutput take *OutputTarget
15:14handmade_opengl.cpp: Make OpenGLRenderGroupToOutput take *OutputTarget
17:50Run the game and see just our debug info
17:50Run the game and see just our debug info
17:50Run the game and see just our debug info
18:36win32_handmade.cpp: #if0 the buffer drawing code
18:36win32_handmade.cpp: #if0 the buffer drawing code
18:36win32_handmade.cpp: #if0 the buffer drawing code
19:13Run the game and see a bunch of solid nonsense
19:13Run the game and see a bunch of solid nonsense
19:13Run the game and see a bunch of solid nonsense
19:33handmade_opengl.cpp: Send a texture to OpenGL every frame
19:33handmade_opengl.cpp: Send a texture to OpenGL every frame
19:33handmade_opengl.cpp: Send a texture to OpenGL every frame
21:12Run the game and see that it almost works
21:12Run the game and see that it almost works
21:12Run the game and see that it almost works
23:00Blackboard: Blending
23:00Blackboard: Blending
23:00Blackboard: Blending
31:38handmade_opengl.cpp: Enable GL_BLEND and use glBlendFunc to specify the blending equation
31:38handmade_opengl.cpp: Enable GL_BLEND and use glBlendFunc to specify the blending equation
31:38handmade_opengl.cpp: Enable GL_BLEND and use glBlendFunc to specify the blending equation
33:23"It's almost like the hardware is set up to do this!"γ
33:23"It's almost like the hardware is set up to do this!"γ
33:23"It's almost like the hardware is set up to do this!"γ
33:29Run the game and see that we are successfully reproducing our image
33:29Run the game and see that we are successfully reproducing our image
33:29Run the game and see that we are successfully reproducing our image
34:01handmade_render_group.h: Add Handle to loaded_bitmap to store whether the bitmap has been submitted
34:01handmade_render_group.h: Add Handle to loaded_bitmap to store whether the bitmap has been submitted
34:01handmade_render_group.h: Add Handle to loaded_bitmap to store whether the bitmap has been submitted
35:59handmade_opengl.cpp: Conditionally bind the texture or set the handle
35:59handmade_opengl.cpp: Conditionally bind the texture or set the handle
35:59handmade_opengl.cpp: Conditionally bind the texture or set the handle
37:46Run the game and see that it now runs much zippier
37:46Run the game and see that it now runs much zippier
37:46Run the game and see that it now runs much zippier
38:18Debugger: Learn that we have a bug in the validation code
38:18Debugger: Learn that we have a bug in the validation code
38:18Debugger: Learn that we have a bug in the validation code
39:09Run the game and point out that the image has a shimmering look to it
39:09Run the game and point out that the image has a shimmering look to it
39:09Run the game and point out that the image has a shimmering look to it
40:04handmade_opengl.cpp: Re-enable bilinear filtering with glTexParameteri
40:04handmade_opengl.cpp: Re-enable bilinear filtering with glTexParameteri
40:04handmade_opengl.cpp: Re-enable bilinear filtering with glTexParameteri
41:56Run the game again and note that we look a lot more like the software renderer, but that our ground chunks are now messed up
41:56Run the game again and note that we look a lot more like the software renderer, but that our ground chunks are now messed up
41:56Run the game again and note that we look a lot more like the software renderer, but that our ground chunks are now messed up
46:47Describe the problems with the current architecture, enabling the debug system in the process
46:47Describe the problems with the current architecture, enabling the debug system in the process
46:47Describe the problems with the current architecture, enabling the debug system in the process
50:56Blackboard: The previous and new flows of data
50:56Blackboard: The previous and new flows of data
50:56Blackboard: The previous and new flows of data
55:21Q&A
🗩
55:21Q&A
🗩
55:21Q&A
🗩
56:12Cynokron Why did you choose OpenGL over DirectX?δ
🗪
56:12Cynokron Why did you choose OpenGL over DirectX?δ
🗪
56:12Cynokron Why did you choose OpenGL over DirectX?δ
🗪
1:00:34TheSizik Did you notice that the ground tiles changed when you introduced sorting?
🗪
1:00:34TheSizik Did you notice that the ground tiles changed when you introduced sorting?
🗪
1:00:34TheSizik Did you notice that the ground tiles changed when you introduced sorting?
🗪
1:01:18Mr4thDimention I've asked this before, but I want to hear your case again, what specific things make a data-protocol based interface better than one with function calls?
🗪
1:01:18Mr4thDimention I've asked this before, but I want to hear your case again, what specific things make a data-protocol based interface better than one with function calls?
🗪
1:01:18Mr4thDimention I've asked this before, but I want to hear your case again, what specific things make a data-protocol based interface better than one with function calls?
🗪
1:05:48Robrobby How is V-Sync controlled?
🗪
1:05:48Robrobby How is V-Sync controlled?
🗪
1:05:48Robrobby How is V-Sync controlled?
🗪
1:06:21cubercaleb Does the GPU do sRGB correction automatically?
🗪
1:06:21cubercaleb Does the GPU do sRGB correction automatically?
🗪
1:06:21cubercaleb Does the GPU do sRGB correction automatically?
🗪
1:07:40Pseudonym73 I wasn't paying close attention, but has the OpenGL texture name thing broken hot-reloading?
🗪
1:07:40Pseudonym73 I wasn't paying close attention, but has the OpenGL texture name thing broken hot-reloading?
🗪
1:07:40Pseudonym73 I wasn't paying close attention, but has the OpenGL texture name thing broken hot-reloading?
🗪
1:08:11FlightSwifty What languages do you know
🗪
1:08:11FlightSwifty What languages do you know
🗪
1:08:11FlightSwifty What languages do you know
🗪
1:08:17elxenoaizd Are there any performance reasons to choose compatible OpenGL API vs Core, or is it just the fact that we get to use programmable shaders in Core?
🗪
1:08:17elxenoaizd Are there any performance reasons to choose compatible OpenGL API vs Core, or is it just the fact that we get to use programmable shaders in Core?
🗪
1:08:17elxenoaizd Are there any performance reasons to choose compatible OpenGL API vs Core, or is it just the fact that we get to use programmable shaders in Core?
🗪
1:10:15Evine Is there any good reason for desktop GPUs to not have programmable blend modes? Because I've seen that most mobile GPUs have that
🗪
1:10:15Evine Is there any good reason for desktop GPUs to not have programmable blend modes? Because I've seen that most mobile GPUs have that
🗪
1:10:15Evine Is there any good reason for desktop GPUs to not have programmable blend modes? Because I've seen that most mobile GPUs have that
🗪
1:10:51Blackboard: Tiled (mobile) vs Non-tiled (desktop) Framebuffer
1:10:51Blackboard: Tiled (mobile) vs Non-tiled (desktop) Framebuffer
1:10:51Blackboard: Tiled (mobile) vs Non-tiled (desktop) Framebuffer
1:17:26ttbjm Do we get gamma correct rendering "for free" now?
🗪
1:17:26ttbjm Do we get gamma correct rendering "for free" now?
🗪
1:17:26ttbjm Do we get gamma correct rendering "for free" now?
🗪
1:17:56cubercaleb Doesn't the OS automatically V-Sync you, or does that only apply in windowed mode?
🗪
1:17:56cubercaleb Doesn't the OS automatically V-Sync you, or does that only apply in windowed mode?
🗪
1:17:56cubercaleb Doesn't the OS automatically V-Sync you, or does that only apply in windowed mode?
🗪
1:18:13Robrobby So gamma curve is also a OpenGL extension?
🗪
1:18:13Robrobby So gamma curve is also a OpenGL extension?
🗪
1:18:13Robrobby So gamma curve is also a OpenGL extension?
🗪
1:18:20Longboolean I know you're probobly sick of all the Vulkan questions, but here is another one. A lot of places online frame Vulkan as the next version of OpenGL, their thought being that once Vulkan is released development / adoption of OpenGL will dwindle to the point where OpenGL drivers are no longer developed by graphics card manufacturers. Could this happen? And in the event that it does, what is your plan?
🗪
1:18:20Longboolean I know you're probobly sick of all the Vulkan questions, but here is another one. A lot of places online frame Vulkan as the next version of OpenGL, their thought being that once Vulkan is released development / adoption of OpenGL will dwindle to the point where OpenGL drivers are no longer developed by graphics card manufacturers. Could this happen? And in the event that it does, what is your plan?
🗪
1:18:20Longboolean I know you're probobly sick of all the Vulkan questions, but here is another one. A lot of places online frame Vulkan as the next version of OpenGL, their thought being that once Vulkan is released development / adoption of OpenGL will dwindle to the point where OpenGL drivers are no longer developed by graphics card manufacturers. Could this happen? And in the event that it does, what is your plan?
🗪
1:20:26BradSheridanMN You stated that the APIs are very similar, but is there a visual effect that can be accomplished on DirectX and not on OpenGL or vice versa?
🗪
1:20:26BradSheridanMN You stated that the APIs are very similar, but is there a visual effect that can be accomplished on DirectX and not on OpenGL or vice versa?
🗪
1:20:26BradSheridanMN You stated that the APIs are very similar, but is there a visual effect that can be accomplished on DirectX and not on OpenGL or vice versa?
🗪
1:21:00andsz_ Is there a good reason why windows OpenGL headers only offer the old legacy stuff while other platforms add new stuff?
🗪
1:21:00andsz_ Is there a good reason why windows OpenGL headers only offer the old legacy stuff while other platforms add new stuff?
🗪
1:21:00andsz_ Is there a good reason why windows OpenGL headers only offer the old legacy stuff while other platforms add new stuff?
🗪
1:21:53cubercaleb At some point can you go over the pros and cons of the different graphics APIs?
🗪
1:21:53cubercaleb At some point can you go over the pros and cons of the different graphics APIs?
🗪
1:21:53cubercaleb At some point can you go over the pros and cons of the different graphics APIs?
🗪
1:25:01Call it a day
🗩
1:25:01Call it a day
🗩
1:25:01Call it a day
🗩