Game Programming Journey – January & February 2020


Zooid UI

I worked on ZooidUI mostly in January. I fixed a bug where the interaction can happen when the UI component is being culled out by UI mask that I implemented in December.

I implemented a basic list view on the UI system. I tried to make this easy to use by me and other programmers. I came up with the idea to use a lambda function to create/generate UI for each item in the list view. This implementation makes each item in the listview easier to manage and customize.

		ZE::UIRect(ZE::UIVector2(0.0f, 0.0f), ZE::UIVector2(210.0f, 70.0f)), 
			listItem, 5, 
			[](const char*& text, ZE::UInt32 idx)

The function DoListView will create the list view based on the parameters. The first one is the string identifier for the list view. The second parameter is a drawing rectangle where the list view should be drawn. If the rectangle can’t have the actual content of the list view, the scroll bar will be shown. Now, It only supports vertical scrollbar. The third and the fourth parameters are a pointer to an array and the size of the array. The last parameter is the lambda function. The function should pass the reference of the data type of the array (in this case, string or char*) and the index of current item being processed. The result will look like the image below.

The first and the third are the same thing. The difference is only the rectangle. As the third one, the rectangle passed is not fit the content, so the scrollbar is shown. And the second one is using DoCheckBox instead of DoText function.

Also, as you can see, the UI have nested scrollbars. I implemented those in such that the mouse scroll should be processed first by the inner scrollbar.


  • (Book) Real-Time Rendering, Ch 9. Global Illumination. Subchapters: Precomputed lighting, occlusion and radiance transfer. I finally finished the chapter.
  • (Tutorial) DirectX 11 from
  • (Course) Youtube video courses on Computer Graphics by Wolfgang Huerst. In January, I started to refresh my knowledge of the basics of Computer Graphics. The course videos by Wolfgang Huerst are really good to refresh your knowledge.
  • (Presentation) GDC 2019 Vault videos:
    • Efficient Rendering in “The Division 2”, Calle Lejdfors & Raul Aguaviva. This talk is about how Massive dealing with the rendering of “The Division 2”. The talk is more about how they dealing with GPU power management and how to minimize stalling between GPU and CPU. Some techniques are mentioned in the talk. The slide presentation can be accessed for free here.
    • Beyond the Remake of “Shadow of the Colossus”: A Technical Perspective – Peter Dalton, Bluepoint Games. The talk is about how Bluepoint Games ported the Shadow into PS4, the technique, the technology they created to support the porting process while maintaining the originality of the game. Half of the talk covers the detail of technologies and their in-house engine they created to support porting the game. The other half of talk also covers a bit of extensive memory management from their past projects with their partner’s technologies and how to achieve the “memory” goal for each project. The slide presentation can be accessed here.

Leave a Reply

Your email address will not be published. Required fields are marked *