Handmade Hero»Episode Guide
Fixing Miscellaneous Bugs
?
?

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)
1:09Run the game and note a bug when walking up the stairs after resizing the window
1:09Run the game and note a bug when walking up the stairs after resizing the window
1:09Run the game and note a bug when walking up the stairs after resizing the window
5:52Consult docs.GL to see whether or not the glScissor operates relative to the viewport1
5:52Consult docs.GL to see whether or not the glScissor operates relative to the viewport1
5:52Consult docs.GL to see whether or not the glScissor operates relative to the viewport1
7:03handmade_opengl.cpp: Make OpenGLRenderCommands() do glScissor() in the space of the DrawRegion
7:03handmade_opengl.cpp: Make OpenGLRenderCommands() do glScissor() in the space of the DrawRegion
7:03handmade_opengl.cpp: Make OpenGLRenderCommands() do glScissor() in the space of the DrawRegion
12:23handmade_math.h: Introduce a version of Offset() which takes a rectangle2i
12:23handmade_math.h: Introduce a version of Offset() which takes a rectangle2i
12:23handmade_math.h: Introduce a version of Offset() which takes a rectangle2i
13:11Run the game and see if that is now correct
13:11Run the game and see if that is now correct
13:11Run the game and see if that is now correct
13:28handmade_opengl.cpp: Enable OpenGLRenderCommands() to reset the glScissor() whenever we clear
13:28handmade_opengl.cpp: Enable OpenGLRenderCommands() to reset the glScissor() whenever we clear
13:28handmade_opengl.cpp: Enable OpenGLRenderCommands() to reset the glScissor() whenever we clear
17:47Run the game, see how that now looks and investigate why the render target is being offset
17:47Run the game, see how that now looks and investigate why the render target is being offset
17:47Run the game, see how that now looks and investigate why the render target is being offset
26:21handmade_opengl.cpp: Make OpenGLRenderCommands() call OpenGLBindFramebuffer()
26:21handmade_opengl.cpp: Make OpenGLRenderCommands() call OpenGLBindFramebuffer()
26:21handmade_opengl.cpp: Make OpenGLRenderCommands() call OpenGLBindFramebuffer()
27:19Run the game and see that it works
27:19Run the game and see that it works
27:19Run the game and see that it works
28:17handmade_opengl.cpp: Make OpenGLRenderCommands() instead set the CurrentRenderTargetIndex to a bogus value up front, so we know we're going through the same path
28:17handmade_opengl.cpp: Make OpenGLRenderCommands() instead set the CurrentRenderTargetIndex to a bogus value up front, so we know we're going through the same path
28:17handmade_opengl.cpp: Make OpenGLRenderCommands() instead set the CurrentRenderTargetIndex to a bogus value up front, so we know we're going through the same path
29:04Run the game and see that this uses the correct viewport
29:04Run the game and see that this uses the correct viewport
29:04Run the game and see that this uses the correct viewport
29:48Consult the issues2
29:48Consult the issues2
29:48Consult the issues2
30:06handmade_render.cpp: Make BlendRenderTarget() set the SourceRowAdvance to the SourceTarget->Pitch
30:06handmade_render.cpp: Make BlendRenderTarget() set the SourceRowAdvance to the SourceTarget->Pitch
30:06handmade_render.cpp: Make BlendRenderTarget() set the SourceRowAdvance to the SourceTarget->Pitch
30:23Run the game, see no change but that it will indeed now be correct, and close the "Wrong pitch" issue
30:23Run the game, see no change but that it will indeed now be correct, and close the "Wrong pitch" issue
30:23Run the game, see no change but that it will indeed now be correct, and close the "Wrong pitch" issue
31:25Determine to fix the "sRGB typo fix not saved?" issue, regarding the GL_VERSION comment
31:25Determine to fix the "sRGB typo fix not saved?" issue, regarding the GL_VERSION comment
31:25Determine to fix the "sRGB typo fix not saved?" issue, regarding the GL_VERSION comment
35:12handmade_opengl.cpp: Make OpenGLGetInfo() call glGetIntegerv() to get the GL_VERSION3
35:12handmade_opengl.cpp: Make OpenGLGetInfo() call glGetIntegerv() to get the GL_VERSION3
35:12handmade_opengl.cpp: Make OpenGLGetInfo() call glGetIntegerv() to get the GL_VERSION3
38:58Run the game, hypothesise that we've fixed the issue, and close it
38:58Run the game, hypothesise that we've fixed the issue, and close it
38:58Run the game, hypothesise that we've fixed the issue, and close it
39:58Determine to fix the "Check GL init fallback" issue
39:58Determine to fix the "Check GL init fallback" issue
39:58Determine to fix the "Check GL init fallback" issue
40:38win32_handmade.cpp: Make Win32InitOpenGL() always call Win32SetPixelFormat()
40:38win32_handmade.cpp: Make Win32InitOpenGL() always call Win32SetPixelFormat()
40:38win32_handmade.cpp: Make Win32InitOpenGL() always call Win32SetPixelFormat()
41:36Run the game, believe the issue to be fixed and close it
41:36Run the game, believe the issue to be fixed and close it
41:36Run the game, believe the issue to be fixed and close it
42:28Consider the "Unnecessary DescribePixelFormat" issue
42:28Consider the "Unnecessary DescribePixelFormat" issue
42:28Consider the "Unnecessary DescribePixelFormat" issue
45:13Close that issue and determine to fix the "UseRenderTargets Bug" issue
45:13Close that issue and determine to fix the "UseRenderTargets Bug" issue
45:13Close that issue and determine to fix the "UseRenderTargets Bug" issue
46:34handmade_opengl.cpp: Make OpenGLGetInfo() assume we don't have a framebuffer object
46:34handmade_opengl.cpp: Make OpenGLGetInfo() assume we don't have a framebuffer object
46:34handmade_opengl.cpp: Make OpenGLGetInfo() assume we don't have a framebuffer object
47:12Run the game and crash
47:12Run the game and crash
47:12Run the game and crash
47:33handmade_opengl.cpp: Make OpenGLRenderCommands() handle the situation in which we don't have a framebuffer object
47:33handmade_opengl.cpp: Make OpenGLRenderCommands() handle the situation in which we don't have a framebuffer object
47:33handmade_opengl.cpp: Make OpenGLRenderCommands() handle the situation in which we don't have a framebuffer object
54:22Run the game and see that that's okay in both cases
54:22Run the game and see that that's okay in both cases
54:22Run the game and see that that's okay in both cases
55:37Close that issue and determine to fix the "PackEntityIntoChunk linked list bug" issue
55:37Close that issue and determine to fix the "PackEntityIntoChunk linked list bug" issue
55:37Close that issue and determine to fix the "PackEntityIntoChunk linked list bug" issue
56:56handmade_world.cpp: Fix the linked list in PackEntityIntoChunk()
56:56handmade_world.cpp: Fix the linked list in PackEntityIntoChunk()
56:56handmade_world.cpp: Fix the linked list in PackEntityIntoChunk()
59:46Run the game, assume that it's fixed and close the issue
59:46Run the game, assume that it's fixed and close the issue
59:46Run the game, assume that it's fixed and close the issue
1:00:50Q&A
🗩
1:00:50Q&A
🗩
1:00:50Q&A
🗩
1:02:40snoringtortoise Not sure what the minimum OpenGL version the game supports, but according to OpenGL.org, the GL_MAJOR_VERSION and GL_MINOR_VERSION are only available in OpenGL 3.0 and above. On lower versions you have to parse the GL_VERSION string4
🗪
1:02:40snoringtortoise Not sure what the minimum OpenGL version the game supports, but according to OpenGL.org, the GL_MAJOR_VERSION and GL_MINOR_VERSION are only available in OpenGL 3.0 and above. On lower versions you have to parse the GL_VERSION string4
🗪
1:02:40snoringtortoise Not sure what the minimum OpenGL version the game supports, but according to OpenGL.org, the GL_MAJOR_VERSION and GL_MINOR_VERSION are only available in OpenGL 3.0 and above. On lower versions you have to parse the GL_VERSION string4
🗪
1:03:13handmade_opengl.cpp: Make OpenGLGetInfo() parse the GL_VERSION string
1:03:13handmade_opengl.cpp: Make OpenGLGetInfo() parse the GL_VERSION string
1:03:13handmade_opengl.cpp: Make OpenGLGetInfo() parse the GL_VERSION string
1:05:51handmade_opengl.cpp: Introduce OpenGLParseNumber()
1:05:51handmade_opengl.cpp: Introduce OpenGLParseNumber()
1:05:51handmade_opengl.cpp: Introduce OpenGLParseNumber()
1:08:40Debugger: Run the game and check out our parsed OpenGL version number
1:08:40Debugger: Run the game and check out our parsed OpenGL version number
1:08:40Debugger: Run the game and check out our parsed OpenGL version number
1:09:35danyguag So I am designing a 3D game engine and want to first write a software renderer for it to learn more about renderers. Do you think I should go straight for OpenGL or software renderer and then OpenGL?
🗪
1:09:35danyguag So I am designing a 3D game engine and want to first write a software renderer for it to learn more about renderers. Do you think I should go straight for OpenGL or software renderer and then OpenGL?
🗪
1:09:35danyguag So I am designing a 3D game engine and want to first write a software renderer for it to learn more about renderers. Do you think I should go straight for OpenGL or software renderer and then OpenGL?
🗪
1:10:28insofaras sscanf(str, "%d.%d", major, minor)
🗪
1:10:28insofaras sscanf(str, "%d.%d", major, minor)
🗪
1:10:28insofaras sscanf(str, "%d.%d", major, minor)
🗪
1:12:21Wrap it up
🗩
1:12:21Wrap it up
🗩
1:12:21Wrap it up
🗩