[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Building and Traversing Graphs" vod_platform=youtube id=4GmDwulUkPA annotator=Miblo] [1:14][Recap and set the stage for the day] [2:52][handmade_sort.cpp: Briefly look through what BuildSpriteGraph() does] [5:08][Blackboard: Graph sort] [8:35][Blackboard: Subgraphs, and marking each node you touch] [9:38][Blackboard: Cycles] [11:41][Blackboard: The steps involved in doing this graph sort] [13:52][handmade_sort.cpp: Reorganise our graph structs] [16:42][handmade_sort.cpp: Begin to implement BuildSpriteGraph() for real] [21:53][Blackboard: Traversing the edges from foremost to backmost] [23:37][handmade_sort.cpp: Continue implementing BuildSpriteGraph()] [24:31][handmade_sort.cpp: Introduce WalkSpriteGraph()] [26:07][handmade_sort.cpp: Introduce RecursiveFromToBack()] [29:30][handmade_sort.cpp: Introduce enum sprite_flag, in order to mark sprites as visited and drawn] [32:07][handmade_sort.cpp: Make BuildSpriteGraph() and RecursiveFromToBack() use those flags] [34:14][Blackboard: Note that we've done the graph sorting steps out of order] [35:02][handmade_sort.cpp: Introduce struct sprite_graph_walk in order to keep track of our location in the graph] [39:17][Consider how we'll need to proceed] [40:38][handmade_sort.cpp: Clean up compile errors] [42:18][handmade_sort.cpp: Make BuildSpriteGraph() and SortEntries() take a memory_arena] [43:50][Consider doing the sort in pieces that don't interfere with one another] [47:59][Blackboard: Treating the game sort data and the debug sort data separately] [52:40][win32_handmae.cpp: Consider issuing RenderCommands() and LinearizeClipRects() in two separate places] [55:09][handmade_sort.cpp: Prevent BuildSpriteGraph() from calling PushStruct()] [55:53][win32_handmade.cpp: Prevent Win32DisplayBufferInWindow() from calling SortEntries()] [56:16][Run the game and find that the entries aren't sorted but that we don't crash] [56:26][Q&A] [57:50][@wasenabled][Did you discuss why you are using recursion and any concerns with stack overflows?] [59:04][@bryanwwag][Working with graphs can be difficult; do you have any techniques for debugging them other than observing screen renders, or is that mostly sufficient?] [1:00:46][@roam00010011][Okay for real, did you address the possibility for intersecting sprites?] [1:01:10][@lumenian][When I code I use the mouse a lot. You seem to be using a lot of shortcuts to jump here and there. Can you tell more about your shortcuts? Thanks![ref site="YouTube" page="Handmade 4coder" url="https://www.youtube.com/playlist?list=PLrBsIiq8z2AbcUih00deJpPWi4e4seti9"]] [1:02:02][@hopollo][Do you know the dev Garry Newman? If yes, what do you think about his work?] [1:02:40][sssmcgrath I stopped using Razer's drivers as soon as you needed an account] [1:03:03][@filiadelski][What's that shirt?] [1:04:00][Wind it down] [/video]