Confirming No Total Ordering
⚠ Click here to regain focus ⚠

?

?

W, K, P / S, J, N Jump to previous / next marker

t / T Toggle theatre / SUPERtheatre mode

z Toggle filter mode V Revert filter to original state

X, ShiftSpace Toggle category and focus previous

v Invert topics / media as per focus

# Keyboard Navigation

## Global Keys

[, < / ], > Jump to previous / next episodeW, K, P / S, J, N Jump to previous / next marker

t / T Toggle theatre / SUPERtheatre mode

z Toggle filter mode V Revert filter to original state

## Menu toggling

q Quotes r References f Filter c Credits## In-Menu Movement

a

w

s

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 nextX, ShiftSpace Toggle category and focus previous

v Invert topics / media as per focus

## Credits Menu

Enter Open URL (in new tab)⏫

Previous: 'Sorting with Sprite Bounds'

⏫

1:15handmade_render_group.cpp: Correctly compute the SpriteBound values in GetBoundFor()

1:15handmade_render_group.cpp: Correctly compute the SpriteBound values in GetBoundFor()

1:15handmade_render_group.cpp: Correctly compute the SpriteBound values in GetBoundFor()

2:23Recap and set the stage for the day

2:23Recap and set the stage for the day

2:23Recap and set the stage for the day

6:42handmade_render_group.cpp: Enable SortEntries() to do a total ordering check

6:42handmade_render_group.cpp: Enable SortEntries() to do a total ordering check

6:42handmade_render_group.cpp: Enable SortEntries() to do a total ordering check

12:14Run the game, try doing the new check and hit our Assertion

12:14Run the game, try doing the new check and hit our Assertion

12:14Run the game, try doing the new check and hit our Assertion

12:46Debugger: Inspect the SortKey values for EntryA and EntryB

12:46Debugger: Inspect the SortKey values for EntryA and EntryB

12:46Debugger: Inspect the SortKey values for EntryA and EntryB

15:28handmade_sort.cpp: Temporarily change the Assert in SortEntries() to a BreakHere, and count the SortErrors

15:28handmade_sort.cpp: Temporarily change the Assert in SortEntries() to a BreakHere, and count the SortErrors

17:22Debugger: Break into SortEntries() to see how many sort errors there were

17:22Debugger: Break into SortEntries() to see how many sort errors there were

17:22Debugger: Break into SortEntries() to see how many sort errors there were

18:13Blackboard: Sort Partial Ordering Problem

18:13Blackboard: Sort Partial Ordering Problem

18:13Blackboard: Sort Partial Ordering Problem

20:43Blackboard: Turning our Partial Ordering into a Total Ordering

20:43Blackboard: Turning our Partial Ordering into a Total Ordering

20:43Blackboard: Turning our Partial Ordering into a Total Ordering

24:00handmade_sort.cpp: Consider making IsInFrontOf() sort by distance from the camera

24:00handmade_sort.cpp: Consider making IsInFrontOf() sort by distance from the camera

24:00handmade_sort.cpp: Consider making IsInFrontOf() sort by distance from the camera

26:20Blackboard: Sorting by distance from the camera

26:20Blackboard: Sorting by distance from the camera

26:20Blackboard: Sorting by distance from the camera

29:43Blackboard: Orthographic camera

29:43Blackboard: Orthographic camera

29:43Blackboard: Orthographic camera

32:55Blackboard: Will taking the topmost point of cards be sufficient?

32:55Blackboard: Will taking the topmost point of cards be sufficient?

32:55Blackboard: Will taking the topmost point of cards be sufficient?

35:25handmade_sort.cpp: Introduce BuildSpriteGraph()

35:25handmade_sort.cpp: Introduce BuildSpriteGraph()

35:25handmade_sort.cpp: Introduce BuildSpriteGraph()

40:50Blackboard: Graph Theory

40:50Blackboard: Graph Theory

40:50Blackboard: Graph Theory

43:14Blackboard: Directed Graph

43:14Blackboard: Directed Graph

43:14Blackboard: Directed Graph

44:27Blackboard: Directed Acyclic Graph

44:27Blackboard: Directed Acyclic Graph

44:27Blackboard: Directed Acyclic Graph

46:43handmade_sort.cpp: Continue implementing BuildSpriteGraph()

46:43handmade_sort.cpp: Continue implementing BuildSpriteGraph()

46:43handmade_sort.cpp: Continue implementing BuildSpriteGraph()

49:45handmade_math.h: Introduce a version of RectanglesIntersect() that takes rectangle2

49:45handmade_math.h: Introduce a version of RectanglesIntersect() that takes rectangle2

49:45handmade_math.h: Introduce a version of RectanglesIntersect() that takes rectangle2

52:31handmade_sort.cpp: Consider partitioning the screen in order to build this graph and potentially using the Z-buffer

52:31handmade_sort.cpp: Consider partitioning the screen in order to build this graph and potentially using the Z-buffer

55:40handmade_sort.cpp: Consider leveraging the screen partitioning in order to optimise the software renderer

55:40handmade_sort.cpp: Consider leveraging the screen partitioning in order to optimise the software renderer

56:15Q&A

🗩

56:15Q&A

🗩

56:15Q&A

🗩

59:15Blackboard: Sorting 3D objects

59:15Blackboard: Sorting 3D objects

59:15Blackboard: Sorting 3D objects

1:02:38Blackboard: Sorting all entities in a linear total ordering

1:02:38Blackboard: Sorting all entities in a linear total ordering

1:02:38Blackboard: Sorting all entities in a linear total ordering

1:10:55Blackboard: Common problematic cases in Handmade Hero

1:10:55Blackboard: Common problematic cases in Handmade Hero

1:10:55Blackboard: Common problematic cases in Handmade Hero

1:14:41Blackboard: The problem with sorting heroes behind walls on rugs on tiles

1:14:41Blackboard: The problem with sorting heroes behind walls on rugs on tiles

1:14:41Blackboard: The problem with sorting heroes behind walls on rugs on tiles

1:20:10Wind it down

🗩

1:20:10Wind it down

🗩

1:20:10Wind it down

🗩

⏬

Next: 'Trying Separate Y and Z Sorts'

⏬