{"id":3051,"date":"2025-06-24T19:32:47","date_gmt":"2025-06-24T19:32:47","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=3051"},"modified":"2025-06-24T19:32:47","modified_gmt":"2025-06-24T19:32:47","slug":"arac-sdl3-ilk-adimlar-ii","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/","title":{"rendered":"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II"},"content":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz. SDL ile ilgili ilk yaz\u0131mda, kuruluma bakm\u0131\u015ft\u0131k ve sonras\u0131nda da; kaynak y\u00f6netimi, olaylar\u0131n kotar\u0131lmas\u0131, g\u00f6rselle\u015ftirme ve bu nesnelerin olu\u015fturulmas\u0131na y\u00f6nelik kabiliyetlere g\u00f6z atm\u0131\u015ft\u0131k. Bu yaz\u0131mda kalan konulara da de\u011finip temel SDL3 uygulamam\u0131z\u0131 tamamlayaca\u011f\u0131z in\u015fallah. E\u011fer ilk yaz\u0131m\u0131 hen\u00fcz okumad\u0131ysan\u0131z a\u015fa\u011f\u0131daki ba\u011flant\u0131ya bir g\u00f6z atman\u0131z\u0131 rica ediyorum:<\/p>\n<p><a href=\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/09\/arac-sdl3-ilk-adimlar-i\/\"><strong>[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar &#8211; I<\/strong><\/a><\/p>\n<p>Evet temel kabiliyetlere bakt\u0131ktan sonra son olarak g\u00f6rselle\u015ftirme ve kalan k\u0131s\u0131mlara bak\u0131yor olaca\u011f\u0131z.<\/p>\n<h3><span style=\"color: #0000ff;\"><strong>G\u00f6rselle\u015ftirme (Strateji \u00d6r\u00fcnt\u00fcs\u00fc)<\/strong><\/span><\/h3>\n<p>Elbette, SDL kulland\u0131\u011f\u0131n\u0131z zaman yapaca\u011f\u0131n\u0131z ilk \u015fey muhtemelen, ekrana bir \u015feyler \u00e7izdirmek olacakt\u0131r. \u015eimdi s\u0131ra geldi, i\u015fin en heyecanl\u0131 k\u0131s\u0131mlar\u0131na \ud83d\ude42<\/p>\n<p>Daha \u00f6nceki yaz\u0131lar\u0131mda da bahsetti\u011fim gibi, SDL sizlere platformdan ba\u011f\u0131ms\u0131z bir alt yap\u0131 sunmakta ve her ne kadar OpenGL ya da DirectX kadar olmasa da, temel \u00e7izim kabiliyetleri sunmaktad\u0131r. Bu \u00f6rne\u011fimiz i\u00e7in temel \u00e7izim kabiliyetlerine, daire, dikd\u00f6rtgen ve \u00fc\u00e7gen \u00e7izimine bak\u0131yor olaca\u011f\u0131z (\u0130leride resim ve di\u011fer ileri seviye API&#8217;lere de bak\u0131yor olabiliriz).<\/p>\n<p>Bu tarz \u00e7izimleri, SDL&#8217;in sundu\u011fu, <em>SDL_RenderFillRect<\/em> <em>, SDL_RenderPoint<\/em> ve <em>SDL_RenderGeometry <\/em>API&#8217;lerini kullanarak yap\u0131yor olaca\u011f\u0131z. API&#8217;leri \u00f6zellikle bu s\u0131rada verdim. Basitten daha karma\u015f\u0131k \u015fekillerin \u00e7izimi i\u00e7in kullan\u0131labilecek en \u00f6nemli API&#8217;ler bunlar. Basit bir uygulama i\u00e7in bu API&#8217;leri kullanarak, gerekli \u00e7izimleri yapabilirsiniz. Biz \u00f6rne\u011fimizde bunu bir ad\u0131m \u00f6teye ta\u015f\u0131may\u0131 hedefliyoruz ve bu kapsamda da strateji \u00f6r\u00fcnt\u00fcs\u00fcn\u00fc kullan\u0131yor olaca\u011f\u0131z.<\/p>\n<p>Peki nedir strateji tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc? Temelde bu \u00f6r\u00fcnt\u00fc, bizlere, bir i\u015flevin ya da i\u015flemin, farkl\u0131 yollarla, esnek ve geni\u015fleyebilir bir mimari ile yap\u0131labilmesine olanak sa\u011flar. Yine bu \u00f6r\u00fcnt\u00fc de, &#8220;Gang of four&#8221; taraf\u0131ndan yaz\u0131lan kitapta ge\u00e7en ve davran\u0131\u015fsal (&#8220;behavioral&#8221;) \u00f6r\u00fcnt\u00fclere girmektedir. A\u015fa\u011f\u0131da bu \u00f6r\u00fcnt\u00fcye y\u00f6nelik genel s\u0131n\u0131f diyagram\u0131n\u0131 bulabilirsiniz:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*YrJMFSdtomGLCbMxo193bA.png\" \/><\/p>\n<p>Farkl\u0131 \u015fekil \u00e7izimleri, bizim i\u00e7in <em>stratejiler<\/em> olacak (bu ba\u011flamda temel s\u0131n\u0131f\u0131 <em>RenderStrategy<\/em>). A\u015fa\u011f\u0131da bu aray\u00fcze y\u00f6nelik kod par\u00e7as\u0131n\u0131 da g\u00f6rebilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true\">class RenderStrategy {\r\npublic:\r\n    virtual ~RenderStrategy() = default;\r\n    virtual void Render(SDL_Renderer* renderer, const Transform&amp; transform) = 0;\r\n};<\/pre>\n<p>Her bir stratejinin, buradaki Render API&#8217;sini ger\u00e7eklemesini bekliyoruz. A\u015fa\u011f\u0131da, dikd\u00f6rtgen i\u00e7in bunun nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. Temel \u00e7izim i\u015flevleri, bu strateji s\u0131n\u0131flar\u0131 i\u00e7erisinde ger\u00e7ekle\u015ftiriliyor olacak.<\/p>\n<pre class=\"lang:c++ decode:true \">class RectangleRenderer : public RenderStrategy {\r\nprivate:\r\n    SDL_Color mColor;\r\n    int32_t mWidth, mHeight;\r\npublic:\r\n    RectangleRenderer(SDL_Color color, int32_t width, int32_t height);    \r\n    void Render(SDL_Renderer* renderer, const Transform&amp; transform) override {\r\n        SDL_SetRenderDrawColor(renderer, mColor.r, mColor.g, mColor.b, mColor.a);\r\n        SDL_FRect rect = {\r\n            transform.mX - (mWidth * transform.mScaleX) \/ 2.0f, \r\n            transform.mY - (mHeight * transform.mScaleY) \/ 2.0f, \r\n            mWidth * transform.mScaleX, \r\n            mHeight * transform.mScaleY\r\n        };\r\n        SDL_RenderFillRect(renderer, &amp;rect);\r\n    }\r\n};\r\n<\/pre>\n<p>Bizim i\u00e7in\u00a0<em>Context\u00a0<\/em>ise, bile\u015fen temel s\u0131n\u0131f\u0131ndan t\u00fcretti\u011fimiz,\u00a0<em>RenderComponent,\u00a0<\/em>s\u0131n\u0131f\u0131m\u0131z olacak. A\u015fa\u011f\u0131da da, bu s\u0131n\u0131fa y\u00f6nelik kod par\u00e7as\u0131n\u0131 g\u00f6rebilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true\">class RenderComponent \r\n    : public Component {\r\nprivate:\r\n    std::unique_ptr&lt;RenderStrategy&gt; mStrategy;\r\n\r\npublic:\r\n    RenderComponent(std::unique_ptr&lt;RenderStrategy&gt; strategy);    \r\n    void SetStrategy(std::unique_ptr&lt;RenderStrategy&gt; strategy);    \r\n    void Render(Renderer&amp; renderer) override;\r\n};<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, kullan\u0131lacak strateji belirlendikten sonra,\u00a0<em>Render\u00a0<\/em>API&#8217;si ile ilgili \u00e7izimleri yap\u0131yor olaca\u011f\u0131z.<\/p>\n<p>Peki bu s\u0131n\u0131f\u0131m\u0131z\u0131 kim kullan\u0131yor olacak? Bu s\u0131n\u0131flara y\u00f6nelik nesnelerimizi ise, bir \u00f6nceki yaz\u0131mda bahsetti\u011fim\u00a0<em>GraphicalObject\u00a0<\/em>nesnelerine, bile\u015fen olarak ekliyor olaca\u011f\u0131z ve i\u015fimiz bitecek. Bu bile\u015fen de, yine ilgili yaz\u0131da bahsetti\u011fimiz fabrika s\u0131n\u0131flar marifeti ile ger\u00e7ekle\u015ftirilecek.<\/p>\n<p>Peki, bu noktada strateji \u00f6r\u00fcnt\u00fcs\u00fcn\u00fcn bize faydalar\u0131 neler diye bakacak olursak:<\/p>\n<ul>\n<li><strong>Okunabilirlik<\/strong>: Uzun if\/else ya da switch\/case&#8217;lerden sizleri kurtar\u0131r,<\/li>\n<li><strong>Esneklik:<\/strong> \u00c7al\u0131\u015fma zaman\u0131nda ilgili \u00e7izim i\u015flevlerini kolay bir \u015fekilde de\u011fi\u015ftirme\/kullanma,<\/li>\n<li><strong>Geni\u015fleyebilirlik:<\/strong> Yeni \u00e7izim kabiliyetlerinin, yeni strateji s\u0131n\u0131flar\u0131 ile kolay bir \u015fekilde eklenebilmesi,<\/li>\n<li><strong>Test Edilebilirlik:<\/strong> Farkl\u0131, \u00e7izim kabiliyetlerinin kolayca test edilebilmesi.<\/li>\n<\/ul>\n<p>G\u00f6rselle\u015ftirme, konusunu kapatmadan \u00f6nce son bir hususa daha de\u011finelim. Yukar\u0131daki, \u00e7izim API&#8217;lerinin hepsinde,\u00a0<em>SDL_Renderer<\/em> nesnesinin ge\u00e7irildi\u011fini g\u00f6r\u00fcrs\u00fcn\u00fcz. Bu veri yap\u0131s\u0131,\u00a0<em>SDL_Window\u00a0<\/em>i\u00e7erisinde \u00e7izim (render) ile ilgili i\u015flevlerin kotar\u0131ld\u0131\u011f\u0131 yerdir. Bu nesneyi de, uygulama i\u00e7erisinde oradan oraya ge\u00e7irmek yerine Singleton \u00f6r\u00fcnt\u00fcs\u00fc ile\u00a0<em>Renderer\u00a0<\/em>s\u0131n\u0131f i\u00e7erisinde tutup, buna ihtiya\u00e7 duyan s\u0131n\u0131flara da (strateji s\u0131n\u0131flar\u0131), bunu ge\u00e7iriyoruz. A\u015fa\u011f\u0131da bu s\u0131n\u0131fa y\u00f6nelik kod par\u00e7as\u0131n\u0131 bulabilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true\">class Renderer {\r\nprivate:\r\n    static std::unique_ptr&lt;Renderer&gt; mInstance;\r\n    SDLRenderer mRenderer;\r\n    \r\n    explicit Renderer(SDL_Renderer* renderer);\r\npublic:\r\n    static Renderer&amp; Instance();    \r\n    static bool Initialize(SDL_Renderer* renderer);    \r\n    static void Shutdown();    \r\n    SDL_Renderer* GetSDLRenderer() const;    \r\n    void Clear(SDL_Color color = {0, 0, 0, 255});    \r\n    void Present();\r\n};<\/pre>\n<p>Singleton \u00f6r\u00fcnt\u00fcs\u00fc, di\u011fer \u00f6r\u00fcnt\u00fclere g\u00f6re en az kullan\u0131lmas\u0131 \u00f6nerilen \u00f6r\u00fcnt\u00fclerden birisidir. Bununla birlikte bizim \u00f6rne\u011fimizde,\u00a0<em>SDL_Renderer<\/em>&#8216;\u0131n b\u00fct\u00fcn SDL uygulamas\u0131nda tek olmas\u0131 ve ortak olarak kullan\u0131lmas\u0131 sebebi ile bu kullan\u0131m\u0131 tercih ettik elbette, farkl\u0131 y\u00f6ntemler de kullan\u0131labilir. Benzer kullan\u0131mlar, log, konfig\u00fcrasyon y\u00f6netimi ve benzeri hususlar i\u00e7in de uygulanabilir.<\/p>\n<p>Bununla birlikte uygulamam\u0131za y\u00f6nelik kabiliyetleri de tamamlam\u0131\u015f oluyoruz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Uygulama<\/strong><\/span><\/h2>\n<p>\u015eimdi gelelim uygulamam\u0131za. \u00d6ncelikle, git reposunu hen\u00fcz indirmediyseniz a\u015fa\u011f\u0131daki ba\u011flant\u0131dan bunu bir indirelim:<\/p>\n<p><strong><a href=\"https:\/\/github.com\/yazilimperver\/cpp-playground\">https:\/\/github.com\/yazilimperver\/cpp-playground<\/a><\/strong><\/p>\n<p>Daha sonra uygulamay\u0131 ister windows isterseniz linux&#8217;ten a\u015fa\u011f\u0131daki komutlar ile olu\u015fturup, \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<ul>\n<li>cmake -S . -B build<\/li>\n<li>cmake &#8211;build build<\/li>\n<li>Linux \u00e7al\u0131\u015ft\u0131rma\n<ul>\n<li>build\/app\/sdl3-example-app<\/li>\n<\/ul>\n<\/li>\n<li>Windows \u00e7al\u0131\u015ft\u0131rma\n<ul>\n<li>build\\app\\Debug\\sdl3-example-app.exe<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Windows s\u00fcr\u00fcm\u00fc i\u00e7in SDL dll&#8217;i otomatik olarak ilgili dizine kopyalanm\u0131\u015f olacak. Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir ekran gelecek:<\/p>\n<p id=\"hauQCzT\"><img loading=\"lazy\" decoding=\"async\" width=\"802\" height=\"625\" class=\"alignnone size-full wp-image-3056 \" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb.png 802w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-300x234.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-768x599.png 768w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-500x390.png 500w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-150x117.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-400x312.png 400w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-800x623.png 800w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2025\/06\/img_685afc25a6ebb-200x156.png 200w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/p>\n<p>burada W, A, S, D tu\u015flar\u0131 ile ye\u015fik kareye hareket verip, space tu\u015fu ile durdurabilirsiniz. Esc ile de uygulamadan \u00e7\u0131kabilirsiniz.<\/p>\n<p>\u0130lgili girdiler ayr\u0131ca, komut sat\u0131r\u0131na da bas\u0131l\u0131yor olacak.<\/p>\n<p>Evet dostlar\u0131m, bu yaz\u0131 ile birlikte art\u0131k hem linux hem de windows (in\u015fallah ileride android) i\u00e7in SDL3 uygulamalar\u0131n\u0131za temel alabilece\u011finiz, modern C++ ve temel yaz\u0131l\u0131m m\u00fchendisli\u011fi pratiklerinin kullan\u0131ld\u0131\u011f\u0131 bir uygulamay\u0131 tamamlam\u0131\u015f olduk. Her t\u00fcrl\u00fc g\u00f6r\u00fc\u015f ve \u00f6nerinizi, yorumlar k\u0131sm\u0131na eklemeyi unutmay\u0131n. \u00d6n\u00fcm\u00fczdeki yaz\u0131lar\u0131m\u0131zda bu, repoya bol bol d\u00f6n\u00fcyor olaca\u011f\u0131z.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><strong><a href=\"https:\/\/refactoring.guru\/design-patterns\/strategy\">https:\/\/refactoring.guru\/design-patterns\/strategy<\/a><\/strong><\/li>\n<li><a href=\"https:\/\/refactoring.guru\/design-patterns\/singleton\"><strong>https:\/\/refactoring.guru\/design-patterns\/singleton<\/strong><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz. SDL ile ilgili ilk yaz\u0131mda, kuruluma bakm\u0131\u015ft\u0131k ve sonras\u0131nda da; kaynak y\u00f6netimi, olaylar\u0131n kotar\u0131lmas\u0131, g\u00f6rselle\u015ftirme ve bu nesnelerin olu\u015fturulmas\u0131na y\u00f6nelik kabiliyetlere g\u00f6z atm\u0131\u015ft\u0131k. Bu yaz\u0131mda kalan konulara da de\u011finip temel SDL3 uygulamam\u0131z\u0131 tamamlayaca\u011f\u0131z in\u015fallah. E\u011fer ilk yaz\u0131m\u0131 hen\u00fcz okumad\u0131ysan\u0131z a\u015fa\u011f\u0131daki ba\u011flant\u0131ya bir g\u00f6z atman\u0131z\u0131 rica ediyorum:&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41,25,188],"tags":[336,42,1178,62,1155,1180,1179],"class_list":["post-3051","post","type-post","status-publish","format-standard","hentry","category-c","category-modern-c","category-oyun-gelistirme","category-yazilim-muhendisligi","tag-design-patterns","tag-modern-c","tag-rendering","tag-sdl","tag-sdl3","tag-singleton","tag-strategy-pattern"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz. SDL ile ilgili ilk yaz\u0131mda, kuruluma bakm\u0131\u015ft\u0131k ve sonras\u0131nda da; kaynak y\u00f6netimi, olaylar\u0131n kotar\u0131lmas\u0131, g\u00f6rselle\u015ftirme ve bu nesnelerin olu\u015fturulmas\u0131na y\u00f6nelik kabiliyetlere g\u00f6z atm\u0131\u015ft\u0131k. Bu yaz\u0131mda kalan konulara da de\u011finip temel SDL3 uygulamam\u0131z\u0131 tamamlayaca\u011f\u0131z in\u015fallah. E\u011fer ilk yaz\u0131m\u0131 hen\u00fcz okumad\u0131ysan\u0131z a\u015fa\u011f\u0131daki ba\u011flant\u0131ya bir g\u00f6z atman\u0131z\u0131 rica ediyorum:... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-24T19:32:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*YrJMFSdtomGLCbMxo193bA.png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II\",\"datePublished\":\"2025-06-24T19:32:47+00:00\",\"dateModified\":\"2025-06-24T19:32:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\"},\"wordCount\":1014,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"Design patterns\",\"Modern C++\",\"rendering\",\"SDL\",\"SDL3\",\"singleton\",\"strategy pattern\"],\"articleSection\":[\"C++\",\"Modern C++\",\"Oyun Geli\u015ftirme\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\",\"name\":\"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2025-06-24T19:32:47+00:00\",\"dateModified\":\"2025-06-24T19:32:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/","og_locale":"tr_TR","og_type":"article","og_title":"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz. SDL ile ilgili ilk yaz\u0131mda, kuruluma bakm\u0131\u015ft\u0131k ve sonras\u0131nda da; kaynak y\u00f6netimi, olaylar\u0131n kotar\u0131lmas\u0131, g\u00f6rselle\u015ftirme ve bu nesnelerin olu\u015fturulmas\u0131na y\u00f6nelik kabiliyetlere g\u00f6z atm\u0131\u015ft\u0131k. Bu yaz\u0131mda kalan konulara da de\u011finip temel SDL3 uygulamam\u0131z\u0131 tamamlayaca\u011f\u0131z in\u015fallah. E\u011fer ilk yaz\u0131m\u0131 hen\u00fcz okumad\u0131ysan\u0131z a\u015fa\u011f\u0131daki ba\u011flant\u0131ya bir g\u00f6z atman\u0131z\u0131 rica ediyorum:... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2025-06-24T19:32:47+00:00","og_image":[{"url":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*YrJMFSdtomGLCbMxo193bA.png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II","datePublished":"2025-06-24T19:32:47+00:00","dateModified":"2025-06-24T19:32:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/"},"wordCount":1014,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["Design patterns","Modern C++","rendering","SDL","SDL3","singleton","strategy pattern"],"articleSection":["C++","Modern C++","Oyun Geli\u015ftirme","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/","name":"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2025-06-24T19:32:47+00:00","dateModified":"2025-06-24T19:32:47+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2025\/06\/24\/arac-sdl3-ilk-adimlar-ii\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"[ARA\u00c7] SDL3 \u0130lk Ad\u0131mlar \u2013 II"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/3051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=3051"}],"version-history":[{"count":3,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/3051\/revisions"}],"predecessor-version":[{"id":3057,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/3051\/revisions\/3057"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=3051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=3051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=3051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}