[video output=day243 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Asynchronous Texture Downloads" vod_platform=youtube id=onEloWtN91Y annotator=Miblo] [0:03][Welcome back] [1:18][Promote 4coder and discuss modal editing] [10:42][Recap and set the stage for the day] [12:48][Blackboard: Texture Downloads] [15:14][Blackboard: Thinking of the GPU memory like a cache] [18:46][Blackboard: Swizzling] [19:24]["CBAD, that's my rapper name"][quote 392] [26:11][Blackboard: Power of 2 textures and modern rectangular texture processing] [29:12][Blackboard: The problems with our current texture downloading scheme] [33:59]["Drivers and Windows. They conspire to "help" you"][quote 393] [34:05][Blackboard: Asset stores] [37:18][Blackboard: How the CPU asset store works] [38:52][Blackboard: The GPU asset store] [42:00][handmade.cpp: Return to the codebase][quote 394] [42:05][handmade_opengl.cpp: How our loading currently happens] [44:14][handmade_asset.cpp: Refresh our memories as to what LoadBitmap and LoadAssetWorkDirectly do] [49:10][handmade_opengl.cpp: Move glTex* calls to handmade_asset.cpp and consider holding the frame if we are not ready with the texture] [51:07][win32_handmade.cpp: Pull the pieces of the picture together] [54:02][win32_handmade.cpp: Call Win32CreateOpenGLContextForWorkerThread in ThreadProc] [55:44][win32_handmade.cpp: Introduce Win32CreateOpenGLContextForWorkerThread] [1:02:18][win32_handmade.cpp: Introduce struct win32_thread_startup] [1:04:31][win32_handmade.cpp: Pass Startup to Win32MakeQueue directly] [1:06:19][win32_handmade.cpp: Undo and introduce GlobalOpenGLRC and GlobalDC instead] [1:11:13][Run the game and see nothing] [1:12:02][win32_handmade.cpp: Add bool32 NeedsOpenGL to platform_work_queue] [1:16:02][Run the game and still see nothing] [1:16:39][handmade_platform.h: Add platform_allocate_texture and platform_deallocate_texture to platform_api and add their equivalent calls] [1:20:03][handmade_asset.cpp: Call Platform.AllocateTexture in the FinalizeAsset_Bitmap case] [1:26:30][win32_handmade.cpp: Write PLATFORM_DEALLOCATE_TEXURE] [1:28:01]["The stream actually hasn't ended..."][quote 395] [1:34:08][handmade_asset.h: Add AssetType to asset_memory_header] [1:39:56][Run the game, see nothing and leave it at that] [1:41:21][Q&A][:speech] [1:41:30][@Miblo][Are we missing a Day in the episode guide? The guide only goes up to Day 242, but today's overlay was saying Day 244] [1:42:39][@garryjohanson][Is it possible to tell OpenGL which graphics card to use if you have more than one in a given machine?] [1:45:26][@cubercaleb][Is it really a good idea to keep the DC around forever? What if the user changes their monitor config while Handmade Hero is running?] [1:46:07][@pragmascrypt][Wouldn't the allocate and deallocate texture fit better in the opengl.cpp layer instead of the platform?] [1:46:26][handmade_opengl.cpp: Move PLATFORM_ALLOCATE_TEXTURE in from win32_handmade.cpp] [1:46:53][@blah238][What is Microsoft's rationale for not allowing exclusive fullscreen mode for Universal Windows Platform games? Seems like that would just shoot themselves in the foot] [1:48:19][@ezysigh][Is there a way to preload vertices / normals / colors to the card in the same way as textures (e.g. before glDrawElements is called) or is that usually never an issue?] [1:49:50][@ffsjs][Could you invite Jeff to "supervise" and "micromanage" you while coding sometime?] [1:50:54][@cubercaleb][For 3D models isn't it typical to upload the mesh to the GPU once and write a shader that takes a transform matrix for drawing each model?] [1:52:58][@ffsjs][It was just for entertainment reasons, I wasn't implying anything else. Jeff saying: "you know, I really don't like the name of that "variable""] [1:54:01][@cubercaleb][How the heck do you even read code with one letter variables?] [1:56:55][@ffsjs][Thank you for the stream. We are not doing a good job asking relevant questions, obviously] [1:57:59][Wrap it up for now][:speech] [1:58:34][Promote 4coder][:speech] [/video]