[video output=day355 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Clearing Out Pending GitHub Bugs" vod_platform=youtube id=pqOlYhlfxSE annotator=Miblo] [0:10][Set the stage for clearing out pending GitHub bugs[ref site="GitHub" page="HandmadeHero/cpp Issues" url="https://github.com/HandmadeHero/cpp/issues"]] [0:58][ctray.cpp: Fix "enterring" typo] [2:17][readme.txt: Update links to point to the new locations] [5:05]["You never upgrade anything during the development of the game"][quote 540] [7:10][Determine to enable the game to compile without warnings or errors in VS 2015] [7:45][simple_preprocessor.cpp: Make ParseMember() cast everything to int] [10:00][On the two different versions of the CRT's maths routines] [11:42][handmade_intrinsics.h: Make AbsoluteValue() call fabsf()] [12:16][handmade_platform.h: Determine to enable AlignPow2() to compile without warning] [16:54][handmade_platform.h: Make AlignPow2() add (Value-Value) to force integral promotion to the size of Value] [18:37][handmade_entity.cpp: Make DEBUGPickEntity() cast Entity->ID.Value to a umm before converting to pointer] [19:29][win32_handmade.cpp: Make WinMain() cast the GlobalBackbuffer values to u32] [19:53][Fix many "hides function parameter" and "hides previous local declaration" warnings] [33:50][Close that issue and request help for the CLANG compatibility issue] [37:12][Determine to reduce the PeekMessage latency] [38:11][On message queues and how Windows implements theirs] [43:37][On PeekMessage()] [47:36][win32_handmade.cpp: Enable Win32ProcessPendingMessages() to make PeekMessage() circumvent WM_PAINT and WM_MOUSEMOVE] [51:43][Run the game to see that it all still works and close that issue] [53:54][Determine to fix the PushClipRect and glScissor issue] [54:30][win32_handmade.cpp: Pass a lower resolution to Win32ResizeDIBSection() and run the game to see that we're in bad shape] [56:25][On food and feeding the world][quote 541] [59:48][win32_handmade.cpp: Switch to the software renderer and run the game to determine that the problem is only in the hardware renderer] [1:01:08][Compare the code for the software and hardware renderers] [1:06:32][Run the game in windowed mode, and resize it to exhibit the bug] [1:09:03][Consult the glScissor documentation[ref site="Khronos" page="glScissor" url="https://www.khronos.org/opengles/sdk/docs/man/xhtml/glScissor.xml"]] [1:09:59][Consult the glViewPort documentation[ref site="docs.GL" page="glViewPort" url="http://docs.gl/gl2/glViewport"] and endeavour to understand the difference between the renderers] [1:21:23][Run the game and eyeball how the cliprect is scaling] [1:25:04][handmade_opengl.cpp: Determine to enable OpenGLRenderCommands() to perform the glScissor() in the correct space] [1:27:43][Blackboard: glScissor coords] [1:29:03][Blackboard: Normalized device coordinates] [1:31:02][Blackboard: Calculating our correct glScissor coordinates] [1:33:30][handmade_opengl.cpp: Enable OpenGLRenderCommands() to correctly scale the region passed to glScissor()] [1:39:52][Run the game to see that the hardware renderer's cliprect is now correct, and close that issue] [1:42:06][handmade_render.cpp: Enable DrawRectangle() to AND the StartClipMask and EndClipMask together for rectangles <= 3 pixels wide] [1:48:02][handmade_entity.cpp: Toggle off rendering of Traversables, run the game and see the effects of the DrawRectangle() change] [1:52:35][handmade_render.cpp: Change DrawRectangle() to test == 4] [1:54:17][Recompile and run to see that the drawing of narrow rectangles is now correct] [1:55:10][handmade_render.cpp: Consider removing the ClipMask from DrawRectangleQuickly(), before closing the issue with it still intact] [1:58:25][Reflect on the day's work] [1:58:58][Q&A][:speech] [1:59:11][@kknewkles][It's rolled over 'round these parts already so Happy New 2017, everyone] [1:59:35][@Jim0_o][In the compression code there is an assert(LiteralCount == 0) it seems to fire on some files, should the literal buffer be flushed after the loop in case it didn't end on a run?] [2:00:55][simple_compressor.cpp: Enable RLECompress() and LZCompress() to correctly flush the literal buffer] [2:03:06][@thesizik][Are you going to consider resizing the debug display for lower display resolutions, or would that not really be worthwhile since it's not part of the final game?] [2:07:50][@phillip_green][A wee bit off-topic, but have you ever considered setting up a green screen / chromakey for your stream?] [2:08:49][@tukimitzoo][What are your 2017 resolutions for Handmade Hero?] [2:09:22][@mtsmox][Shouldn't the cliprect only be rescaled at the same point that the offset is done? Only the main buffer should have it] [2:10:36][@hayai][No high production values? Stream looks good and there's a frame around the scare-cam and a nice little fade-in timer. That seems like more effort than a lot of what I see] [2:12:34][@thezoq2][So that black box is a window, not just an overlay in OBS?] [2:14:04][@jessermeyer][Please consider demonstrating NVidia's cmdlist extension as a way of thinking about modern graphics dev] [2:15:10][Close it down with a glimpse into 2017][:speech] [/video]