{"id":3346,"date":"2023-08-20T02:27:57","date_gmt":"2023-08-20T06:27:57","guid":{"rendered":"https:\/\/blog.wholetomato.com\/?p=3346"},"modified":"2025-11-17T06:49:07","modified_gmt":"2025-11-17T10:49:07","slug":"summer-codefest-modern-c-with-modern-3d-recap","status":"publish","type":"post","link":"https:\/\/www.wholetomato.com\/blog\/summer-codefest-modern-c-with-modern-3d-recap\/","title":{"rendered":"Summer CodeFest: Modern C++ with Modern 3D [Recap]"},"content":{"rendered":"<h2><span style=\"font-weight: 400;\">Webinar overview: 3D Graphics in C++<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Dr. Yilmaz Yoru shares his knowledge on graphics, as well as its counterpart analyzers and calculations used in 3D C++. He uses <\/span><a href=\"https:\/\/www.embarcadero.com\/products\/cbuilder\/\"><span style=\"font-weight: 400;\">C++ Builder<\/span><\/a><span style=\"font-weight: 400;\"> for most of his examples but almost any compiler can be used for the projects he demoed. Check out his website and other projects <\/span><a href=\"https:\/\/yyoru.com\/\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3350\" data-permalink=\"https:\/\/www.wholetomato.com\/blog\/summer-codefest-modern-c-with-modern-3d-recap\/summer-codefest_-modern-c-with-modern-3d-webinar-replay-5-16-screenshot\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?fit=553%2C313&amp;ssl=1\" data-orig-size=\"553,313\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Summer CodeFest_ Modern C++ with Modern 3D Webinar Replay 5-16 screenshot\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?fit=300%2C170&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?fit=553%2C313&amp;ssl=1\" class=\"alignnone wp-image-3350 size-full\" src=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?resize=553%2C313&#038;ssl=1\" alt=\"\" width=\"553\" height=\"313\" srcset=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?w=553&amp;ssl=1 553w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?resize=300%2C170&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Summer-CodeFest_-Modern-C-with-Modern-3D-Webinar-Replay-5-16-screenshot-e1692511635513.png?resize=360%2C204&amp;ssl=1 360w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<h2><span style=\"font-weight: 400;\">Why use C++ for 3D<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">C++ is one of the top options if you are working with 3D graphics for the same reason you use it in embedded systems and high frequency trading\u2014speed and performance.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Any programming language can execute basic 2D graphics, but if we want to display 3D graphics in real-time (e.g. 3D simulations or rendering for video games),\u00a0 then a language and environment that runs fast is essential. Furthermore, C++ also provides support for some of the most popular 3D libraries available such as OpenGL (GLUT) or Direct3D libraries.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3352\" data-permalink=\"https:\/\/www.wholetomato.com\/blog\/summer-codefest-modern-c-with-modern-3d-recap\/why-c-preferred-for-3d\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?fit=1918%2C1464&amp;ssl=1\" data-orig-size=\"1918,1464\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Why C++ preferred for 3D\" data-image-description=\"&lt;p&gt;#image_title&lt;\/p&gt;\n\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?fit=300%2C229&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?fit=1024%2C782&amp;ssl=1\" class=\"wp-image-3352 aligncenter\" src=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=720%2C550&#038;ssl=1\" alt=\"\" width=\"720\" height=\"550\" srcset=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=300%2C229&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=1024%2C782&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=768%2C586&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=1536%2C1172&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=1200%2C916&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?resize=360%2C275&amp;ssl=1 360w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Why-C-preferred-for-3D.png?w=1918&amp;ssl=1 1918w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<h2><span style=\"font-weight: 400;\">Features of C++ used in 3D<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">There are a couple of useful features in C++ that can be used in general programming as well as 3D work. Watch the session to grasp the fundamentals of these features and how it can be used in 3D C++. Some of the features included:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Class features (constructors, move, copy, move operator, etc.)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">std::array<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">std::vector<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">std::map<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">lambdas<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">templates<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">unique_ptr<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">std::sort<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">We have other sessions in the <a href=\"https:\/\/www.wholetomato.com\/blog\/2023\/08\/21\/summer-codefest-lambdas-go-baa-recap\/\">Summer CodeFest<\/a> that talk about some of these features such as lambdas and templates. Visit our <\/span><a href=\"https:\/\/www.wholetomato.com\/blog\/\"><span style=\"font-weight: 400;\">blog<\/span><\/a><span style=\"font-weight: 400;\"> to find them.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Color Management and Color Applications<\/span><\/h2>\n<blockquote><p><span style=\"font-weight: 400;\">[In modeling for 3D,] Pixels are the real graphics.<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Graphical work in 2D\/3D is primarily managing how the colors of pixels change and the underlying mathematics that decides when and how these changes happen.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The bulk of the work is computational and applied mathematics. Determining how pixels change will rely on complex mathematical models. And consequently in modern 3D, programmers must find a way to visualize gigabytes worth of numbers. Fortunately, the C++ features mentioned earlier can greatly simplify this as you are working more closely with the actual data and memory\u2014and the results can be shown in real time too.<\/span><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3355\" data-permalink=\"https:\/\/www.wholetomato.com\/blog\/summer-codefest-modern-c-with-modern-3d-recap\/screenshot-2023-08-20-at-2-26-12-pm\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?fit=2602%2C1460&amp;ssl=1\" data-orig-size=\"2602,1460\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"2D and 3D\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?fit=300%2C168&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?fit=1024%2C575&amp;ssl=1\" class=\"alignnone wp-image-3355 size-large\" src=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=1024%2C575&#038;ssl=1\" alt=\"\" width=\"1024\" height=\"575\" srcset=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=1024%2C575&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=300%2C168&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=768%2C431&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=1536%2C862&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=2048%2C1149&amp;ssl=1 2048w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=1200%2C673&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?resize=360%2C202&amp;ssl=1 360w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-20-at-22612-PM.png?w=2280&amp;ssl=1 2280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">As discussed earlier, 3D work is fundamentally the crunching of numbers using appropriate mathematical operations and models. Here are some examples shared in the presentation:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Rotation matrices (used in 3D projection, vectors, robotics)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Euler formulas (shows how a single axis parameter in 2D can be rotated to create 3D shapes)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Quaternions (used to describe orientation or rotations in 3D space using an ordered set of four numbers)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Octonions, rotors, and beyond (even more complex scalar and complex vectors using advanced algebra)<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-weight: 400;\">Slide Deck Presentation<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Please <\/span><a href=\"mailto:yilmazyoru@esenja.com\"><span style=\"font-weight: 400;\">email Dr. Yilmaz<\/span><\/a><span style=\"font-weight: 400;\"> for his copy of his presentation slides.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Replay<\/span><\/h2>\n<p><iframe loading=\"lazy\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/S8XJGcISrVs\" width=\"760\" height=\"415\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><br \/>\n<span style=\"font-weight: 400;\">You can also find Dr. Yoru\u2019s website <\/span><a href=\"https:\/\/yyoru.com\/\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Webinar overview: 3D Graphics in C++ Dr. Yilmaz Yoru shares his knowledge on graphics, as well as its counterpart analyzers and calculations used in 3D C++. He uses C++ Builder for most of his examples&#8230;<\/p>\n","protected":false},"author":213500340,"featured_media":3348,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[726359896],"tags":[726359926,726359931,2426,726359930,726359927,726359928,726359929],"class_list":["post-3346","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-webinar-recap","tag-3d","tag-analyzers","tag-c","tag-calculations","tag-modeling","tag-modern","tag-tips-and-tricks"],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2023\/08\/16_WTSummer-CodeFest-Individual-Sessions_Modern-C-with-Modern-3D-1920x1080-1.png?fit=1920%2C1080&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfpLS4-RY","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/3346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/users\/213500340"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/comments?post=3346"}],"version-history":[{"count":14,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/3346\/revisions"}],"predecessor-version":[{"id":3502,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/3346\/revisions\/3502"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/media\/3348"}],"wp:attachment":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/media?parent=3346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/categories?post=3346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/tags?post=3346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}