SDL 3.4 3D GPU API এবং 2D রেন্ডারিংয়ের মধ্যে আন্তঃকার্যক্ষমতা জোরদার করে

  • SDL 3.4 নতুন রেন্ডারার, GPU অবস্থা এবং YUV এবং HDR-এর জন্য সমর্থন সহ 3D GPU API এবং 2D রেন্ডারিংয়ের মধ্যে আন্তঃকার্যক্ষমতা জোরদার করে।
  • এই সংস্করণে নেটিভ PNG সাপোর্ট, নতুন টেক্সচার স্কেলিং এবং রাউটিং বিকল্প, অ্যানিমেটেড কার্সার এবং উন্নত ইনপুট এবং উইন্ডো ইভেন্ট যোগ করা হয়েছে।
  • এতে উইন্ডোজ, ম্যাকওএস, লিনাক্স, এমস্ক্রিপ্টেন, আইওএস এবং ভিশনওএসের জন্য নির্দিষ্ট বর্ধিতকরণ অন্তর্ভুক্ত রয়েছে, পাশাপাশি কন্ট্রোলার, এইচআইডি এবং অ্যাটমিক কেএমএসডিআরএমের জন্য বর্ধিত সমর্থনও রয়েছে।
  • SDL 3.4 SDL3 এর একটি পরিণত সংস্করণ হিসেবে প্রতিষ্ঠিত, যার স্থায়িত্ব বেশি, কর্মক্ষমতা ভালো এবং স্টিম, ভালকান এবং ওয়েব প্ল্যাটফর্মের সাথে আরও গভীর একীকরণ রয়েছে।

এসএলডি 3.4

আপনি যদি ভিডিও গেম ডেভেলপমেন্ট বা ক্রস-প্ল্যাটফর্ম মাল্টিমিডিয়া অ্যাপ্লিকেশনে কাজ করেন, তাহলে আপনি সম্ভবত SDL এর কথা শুনেছেন। আগমন de SDL 3.4ডেস্কটপ, ওয়েব এবং মোবাইল ডিভাইস জুড়ে ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য গ্রাফিক্স ক্ষমতা, প্ল্যাটফর্ম সাপোর্ট এবং সরঞ্জামগুলির ক্ষেত্রে লাইব্রেরিটি একটি উল্লেখযোগ্য অগ্রগতি অর্জন করেছে। এটি কোনও ছোটখাটো আপডেট নয়: এতে 2D রেন্ডারিং ইঞ্জিন এবং 3D GPU API থেকে শুরু করে অডিও হ্যান্ডলিং, ড্রাইভার, পেন ইনপুট, আধুনিক লিনাক্স সিস্টেম এবং আরও অনেক কিছু অন্তর্ভুক্ত রয়েছে।

যদিও SDL 3 বিকশিত হতে থাকে, শাখাটি ৩.৪ নিজেকে একটি খুব শক্তিশালী সংস্করণ হিসেবে উপস্থাপন করে নতুন এবং চলমান প্রকল্পগুলিকে কর্মক্ষমতা উন্নতি, নতুন API এবং Emscripten, Wayland, Vision Pro, এমনকি PlayStation 2 এর মতো পরিবেশের সাথে খুব নির্দিষ্ট প্রেক্ষাপটে আরও ভাল ইন্টিগ্রেশনের সুবিধা নিতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। আসুন SDL 3.4-এ নতুন কী রয়েছে, এটি আপনার পরবর্তী প্রকল্পের জন্য কেন প্রাসঙ্গিক এবং আপনি যদি এটি থেকে সর্বাধিক সুবিধা পেতে চান তবে আপনার কী প্রযুক্তিগত বিবরণ মনে রাখা উচিত তা ঘনিষ্ঠভাবে দেখে নেওয়া যাক।

SDL 3.4 এর সবচেয়ে গুরুত্বপূর্ণ সাধারণ নতুন বৈশিষ্ট্যগুলি

SDL 3.4 এর মূল কাজের ধারাটি হল 3D এবং 2D এর মধ্যে আন্তঃকার্যক্ষমতা উন্নত করুনএটি গেম ইঞ্জিন এবং অ্যাপ্লিকেশনগুলির জন্য গুরুত্বপূর্ণ যা 2D ইন্টারফেসকে 3D কন্টেন্টের সাথে মিশ্রিত করে। এখন পর্যন্ত, উভয় স্তর একত্রিত করার জন্য ডেভেলপারদের আরও বেশি পরিশ্রমের প্রয়োজন হতে পারে; এই সংস্করণটি নতুন ইউটিলিটি এবং বৈশিষ্ট্যগুলি প্রবর্তন করে যা এই প্রক্রিয়াটিকে সহজতর করে।

গ্রাফিক্স ছাড়াও, আপডেটটিতে অন্তর্ভুক্ত রয়েছে PNG ছবির জন্য নেটিভ সাপোর্টইনপুট সিস্টেমে (মাউস, স্টাইলাস, অঙ্গভঙ্গি, অন-স্ক্রিন কীবোর্ড) উল্লেখযোগ্য উন্নতি হয়েছে এবং উইন্ডোজ, ম্যাকওএস, লিনাক্স, এমস্ক্রিপ্টেন, আইওএস, ভিশনওএস এবং অন্যান্য কম সাধারণ প্ল্যাটফর্মের জন্য বেশ কিছু নির্দিষ্ট পরিবর্তন এসেছে। স্টিম ইকোসিস্টেমের সাথে ইন্টিগ্রেশন এবং এর রানটাইমও পরিমার্জিত করা হয়েছে, যা লিনাক্স গেমিং এবং স্টিম বিতরণের লক্ষ্যে ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্টের জন্য অত্যন্ত গুরুত্বপূর্ণ।

SDL 3
সম্পর্কিত নিবন্ধ:
SDL 3: লিনাক্স ডেভেলপমেন্ট এবং ক্রস-প্ল্যাটফর্ম গেমের জন্য নতুন যুগ

3D GPU API এবং 2D রেন্ডারিংয়ের মধ্যে আন্তঃকার্যক্ষমতা

SDL 3.4 এর অন্যতম শক্তি হল এর বুস্ট 3D এবং 2D এর মধ্যে ইন্টিগ্রেশনলাইব্রেরিটি GPU-ভিত্তিক 2D রেন্ডারার তৈরি করার জন্য এবং SDL দ্বারা পরিচালিত GPU টেক্সচার এবং পিক্সেল ফর্ম্যাটের মধ্যে তথ্য বিনিময়ের জন্য নতুন ফাংশন প্রবর্তন করে।

  • এটি যুক্ত করে SDL_CreateGPURএন্ডারার() একটি 2D রেন্ডারার তৈরি করতে যা অন্তর্নিহিত GPU API ব্যবহার করে।
  • বিরূদ্ধে SDL_GetGPURendererDevice() আপনি সেই রেন্ডারারের সাথে সম্পর্কিত GPU ডিভাইসটি পুনরুদ্ধার করতে পারেন।
  • তারা যোগ দেয় SDL_CreateGPURenderState()2D GPU রেন্ডারিংয়ের মধ্যে ফ্র্যাগমেন্ট শেডারের সাথে কাজ করার জন্য , SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() এবং SDL_DestroyGPURenderState()।
  • এখন তাদের ভর্তি করা হয়েছে YUV টেক্সচার এবং HDR রঙের স্থান GPU-ভিত্তিক 2D রেন্ডারারে, যা বিশেষ করে উচ্চ-মানের ভিডিও এবং সামগ্রীর জন্য আকর্ষণীয়।

এটিতে যেমন বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করা হয়েছে SDL_GetGPUডিভাইস প্রোপার্টি()এটি GPU ডিভাইসের বৈশিষ্ট্যগুলি প্রদান করে, যার মধ্যে রয়েছে ডিভাইসের নাম, ড্রাইভারের নাম এবং সংস্করণ এবং সামঞ্জস্যতা বা ডায়াগনস্টিক সিদ্ধান্তের জন্য প্রাসঙ্গিক অন্যান্য তথ্য। অতিরিক্তভাবে, `SDL_GetPixelFormatFromGPUTextureFormat()` এবং `SDL_GetGPUTextureFormatFromPixelFormat()` GPU টেক্সচার ফর্ম্যাট এবং SDL পিক্সেল ফর্ম্যাটের মধ্যে রূপান্তর সহজতর করে।

সমান্তরালভাবে, সম্পত্তিটি অন্তর্ভুক্ত করা হয়েছে SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER সম্পর্কে একটি বিদ্যমান GPU টেক্সচার থেকে একটি 2D টেক্সচার তৈরি করতে, এবং 2D GPU রেন্ডারার ব্যবহার করার সময় 2D টেক্সচারের সাথে যুক্ত GPU টেক্সচার পেতে SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER ব্যবহার করতে। GPU API-তে তৈরি কন্টেন্টকে ক্লাসিক SDL 2D পাইপলাইনের সাথে মিশ্রিত করার সময় এই পদ্ধতিটি ঘর্ষণকে উল্লেখযোগ্যভাবে হ্রাস করে।

2D রেন্ডারিং এবং টেক্সচার হ্যান্ডলিং-এ উন্নতি

SDL 3.4 কেবল আন্তঃকার্যক্ষমতার বাইরে যায় এবং এর জন্য নির্দিষ্ট ফাংশন যোগ করে 2D রেন্ডারিংয়ের মান এবং নিয়ন্ত্রণ উন্নত করুনউদাহরণস্বরূপ, SDL_RenderTexture9GridTiled() চালু করা হয়েছে, যা "টাইল্ড" মোডে টেক্সচার সহ 9-গ্রিড রেন্ডারিংকে অনুমতি দেয়, ইন্টারফেস উপাদান বা ফ্রেমের বিকৃতি এড়ায়, তাদের প্রসারিত করার পরিবর্তে।

টেক্সচারের স্কেল কীভাবে হবে তা পরিচালনা করতে, নিম্নলিখিতগুলি যোগ করা হয়েছে SDL_GetDefaultTextureScaleMode() এবং SDL_SetDefaultTextureScaleMode(), যা নতুন টেক্সচারের জন্য একটি ডিফল্ট স্কেলিং মোড সেট করার অনুমতি দেয়। এর সাথে সম্পর্কিত হল SDL_GetRenderTextureAddressMode() এবং SDL_SetRenderTextureAddressMode(), ধ্রুবক SDL_TEXTURE_ADDRESS_WRAP সহ, যা প্রদান করে টেক্সচার র‍্যাপ সাপোর্ট যখন রেন্ডারার নির্দেশ করে যে এটি মোড়ানো সমর্থন করে (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN)।

রেট্রো নান্দনিকতার গেমগুলির জন্য একটি খুব আকর্ষণীয় নতুন বৈশিষ্ট্য হল SDL_SCALEMODE_PIXELART সম্পর্কে, পিক্সেল আর্টের জন্য ডিজাইন করা একটি স্কেলিং অ্যালগরিদম যা অন্যান্য ফিল্টারিং মোডের ক্লাসিক ব্লারিং এড়ায়, চিত্রটি ব্যাপকভাবে বড় করার সময়ও সংজ্ঞায়িত প্রান্তগুলি সংরক্ষণ করে।

এর সাথে কাজ করার সম্ভাবনাও রয়েছে টেক্সচার প্যালেটSDL_SetTexturePalette() এবং SDL_GetTexturePalette() আপনাকে টেক্সচারে প্যালেটগুলি বরাদ্দ এবং কোয়েরি করার অনুমতি দেয়, যা আপনি যদি পুরানো গ্রাফিক স্টাইলগুলি পুনরায় তৈরি করেন বা নির্দিষ্ট মেমরি এবং ব্যান্ডউইথ প্রবাহকে অপ্টিমাইজ করতে চান তবে কার্যকর।

পৃষ্ঠতলের দিক থেকে, SDL 3.4 অন্তর্ভুক্ত করে SDL_ঘোরানো পৃষ্ঠ() একটি পৃষ্ঠের ঘূর্ণিত কপি তৈরি করতে, উভয় অক্ষের উপর একই সাথে উল্টানো পৃষ্ঠে SDL_FLIP_HORIZONTAL_AND_VERTICAL যোগ করা হয়। অতিরিক্তভাবে, SDL_PROP_SURFACE_ROTATION_NUMBER বৈশিষ্ট্য (পরে চূড়ান্ত রিলিজ প্রার্থী পরিবর্তনে SDL_PROP_SURFACE_ROTATION_FLOAT দ্বারা প্রতিস্থাপিত হয়) ক্যামেরার ছবি সঠিকভাবে প্রদর্শনের জন্য প্রয়োজনীয় কোণ নির্দিষ্ট করতে ব্যবহৃত হয়।

নেটিভ পিএনজি সাপোর্ট এবং সারফেস লোডিং

ব্যবহারিকতার দিক থেকে সবচেয়ে স্বাগত উন্নতিগুলির মধ্যে একটি হল SDL 3.4-এ অন্তর্ভুক্ত রয়েছে PNG এর জন্য নেটিভ সাপোর্ট...অনেক ক্ষেত্রেই বাইরের লাইব্রেরির উপর নির্ভর না করে। এটি অনেক কিছু সহজ করে তোলে ছোট প্রকল্প এবং প্রোটোটাইপ।

  • SDL_লোডপিএনজি() এবং SDL_LoadPNG_IO() PNG ছবি সরাসরি পৃষ্ঠতল হিসেবে লোড করার অনুমতি দেয়।
  • SDL_SavePNG() এবং SDL_SavePNG_IO() PNG ফর্ম্যাটে পৃষ্ঠতল সংরক্ষণ করতে ব্যবহৃত হয়।
  • বিরূদ্ধে SDL_লোডসারফেস() SDL_LoadSurface_IO() স্বয়ংক্রিয়ভাবে ফাইলটি BMP নাকি PNG তা সনাক্ত করে এবং ফর্ম্যাট নিয়ে চিন্তা না করেই এটিকে একটি পৃষ্ঠে লোড করে।

এই সমন্বিত সহায়তা অনুবাদ করে কম নির্ভরতা এবং বহিরাগত কনফিগারেশনএটি বিশেষভাবে কার্যকর যখন একাধিক প্ল্যাটফর্মের জন্য কম্পাইল করা হয় অথবা Emscripten এর মতো পরিবেশে SDL ব্যবহার করা হয়, যেখানে সহায়ক লাইব্রেরির সংখ্যা হ্রাস করলে বাইনারি আকার এবং জটিলতা উভয় ক্ষেত্রেই পার্থক্য তৈরি হয়।

ইনপুট: মাউস, স্টাইলাস, অঙ্গভঙ্গি এবং অন-স্ক্রিন কীবোর্ড

SDL 3.4 এর সাথে সম্পর্কিত সবকিছু উল্লেখযোগ্যভাবে উন্নত করে উন্নত ইনপুট ডিভাইসমাউস ডোমেইনে, SDL_SetRelativeMouseTransform() চালু করা হয়েছে, যা আপেক্ষিক মাউস ইনপুটে একটি কাস্টম রূপান্তর প্রয়োগ করতে দেয়, যা স্কেলিং কৌশল, অক্ষ বিপরীতকরণ বা বিশেষ ম্যাপিংয়ের জন্য কার্যকর।

পেন্সিল এবং স্টাইলাস সম্পর্কে, এটি দেখা যাচ্ছে SDL_GetPenDeviceType()যা আপনাকে কলমটি সরাসরি স্ক্রিনে কাজ করছে নাকি আলাদা টাচপ্যাডে কাজ করছে তা আলাদা করতে সাহায্য করে, ডিভাইসের ধরণ অনুসারে UX অভিযোজিত করার জন্য এটি একটি খুবই কার্যকর বিশদ।

ভার্চুয়াল কীবোর্ডযুক্ত ডিভাইসগুলিতে, SDL ইভেন্ট যোগ করে যেমন SDL_EVENT_SCREEN_KEYBOARD_SHOWN সম্পর্কে এবং SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, যা অন-স্ক্রীন কীবোর্ড প্রদর্শিত বা লুকানো অবস্থায় রিপোর্ট করে। এটি আপনাকে ইন্টারফেস সামঞ্জস্য করতে, উপাদানগুলি সরাতে বা টেক্সট ফিল্ডগুলিকে ঢেকে রাখা থেকে বিরত রাখতে দেয়।

ইভেন্টের সাথে সাথে অঙ্গভঙ্গি ব্যবস্থাও সম্প্রসারিত হচ্ছে SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE এবং SDL_EVENT_PINCH_ENDযা জুমিং এবং অনুরূপ ক্রিয়াকলাপের জন্য পিঞ্চ অঙ্গভঙ্গি সনাক্ত করে। অতিরিক্তভাবে, ওয়েল্যান্ড পরিবেশে, পাঁচটিরও বেশি মাউস বোতামের জন্য সমর্থন সংশোধন করা হয় এবং X11-এ নির্ভুল স্ক্রোলিং চালু করা হয়, যা সূক্ষ্ম স্ক্রোলিংয়ের মসৃণতা উন্নত করে।

অবশেষে, SDL 3.4 অন্তর্ভুক্ত করে SDL_GetEventDescription(), একটি ইভেন্টের ইংরেজি বর্ণনা পাওয়ার জন্য একটি ফাংশন, লগিং এবং ডিবাগিংয়ের জন্য, একাধিক প্ল্যাটফর্ম জুড়ে বিরল ইনপুট আচরণ ট্র্যাক করার সময় এটি খুবই কার্যকর।

অডিও: আরও নমনীয় কর্মপ্রবাহ এবং কোনও সিস্টেম পুনঃপ্রক্রিয়াকরণ নেই

অডিও সাবসিস্টেমটিও উন্নতির ন্যায্য অংশ পাচ্ছে, যার উপর একটি দৃঢ় মনোযোগ রয়েছে দক্ষ প্রক্রিয়াজাতকরণ এবং পাইপলাইন নিয়ন্ত্রণশুরুতে, SDL_EVENT_AUDIO_DEVICE_ADDED এখন প্রতিটি সনাক্ত করা অডিও ডিভাইসের জন্য প্রাথমিককরণের সময়ও পাঠানো হয়, যা গতিশীল ইভেন্টের জন্য অপেক্ষা না করেই ডিভাইসগুলি আবিষ্কার এবং তালিকাভুক্ত করা সহজ করে তোলে।

দুটি নতুন বৈশিষ্ট্য, SDL_PutAudioStreamDataNoCopy() এবং SDL_PutAudioStreamPlanarData(), অডিও স্ট্রিমগুলির সাথে কাজ করার সময় আরও বিকল্প দেয়: প্রথমটি নির্দিষ্ট কিছু ক্ষেত্রে অপ্রয়োজনীয় কপি এড়ায় এবং দ্বিতীয়টি ইন্টারলিভডের পরিবর্তে প্ল্যানার ফর্ম্যাটে ডেটা প্রবেশ করার অনুমতি দেয়, যা উন্নত স্ট্রিমগুলির জন্য বা উচ্চ-স্তরের অডিও প্রক্রিয়াকরণ লাইব্রেরির সাথে একীকরণের জন্য আদর্শ।

এছাড়াও, SDL_HINT_AUDIO_DEVICE_RAW_STREAM ইঙ্গিতটি কেন্দ্রবিন্দুতে থাকে: এই ইঙ্গিতটি নির্দেশ করে যে অপারেটিং সিস্টেম অডিওতে অতিরিক্ত প্রক্রিয়াকরণ প্রয়োগ করা উচিত নয়। (যেমন শব্দ বাতিলকরণ)। যদি আপনার অ্যাপ্লিকেশন বা গেমটি ইতিমধ্যেই প্রক্রিয়াকরণ পরিচালনা করে এবং আপনি চান না যে OS হস্তক্ষেপ করুক এবং ফলাফল বিকৃত করুক, তাহলে এটি গুরুত্বপূর্ণ। এছাড়াও SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN চালু করা হয়েছে, যা নির্দিষ্ট স্ট্রিমগুলিকে অডিও সাবসিস্টেমের জীবনচক্রের বাইরেও টিকে থাকতে দেয়, যা আরও জটিল আর্কিটেকচারে কার্যকর।

HID কন্ট্রোলার এবং ডিভাইস

SDL 3.4 কন্ট্রোলার এবং HID ডিভাইসের জন্য সমর্থন উল্লেখযোগ্যভাবে উন্নত করে, বহিরাগত কনফিগারেশন ছাড়াই বাক্সের বাইরে কাজ করে এমন হার্ডওয়্যারের পরিসর প্রসারিত করে। বিশেষ করে, এটি যোগ করে 8BitDo কন্ট্রোলারের জন্য উন্নত সমর্থনFlyDigi এবং Hand Held Legend SINput, যা অনেক থার্ড-পার্টি গেমপ্যাডের জন্য আরও ধারাবাহিকভাবে কাজ করা সহজ করে তোলে।

এটি অন্তর্ভুক্ত করা হয় তারযুক্ত নিন্টেন্ডো সুইচ 2 কন্ট্রোলার স্ট্যান্ড যখন SDL কে libusb দিয়ে কম্পাইল করা হয়, তখন এটি তাদের জন্য আকর্ষণীয় যারা ওয়্যারলেস মোডের পরিবর্তে সরাসরি সংযোগ পছন্দ করেন। HID API স্তরে, SDL_hid_get_properties() SDL বৈশিষ্ট্যগুলিকে HID ডিভাইসের সাথে সংযুক্ত করে বলে মনে হয়, এবং SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER বৈশিষ্ট্যটি libusb দিয়ে খোলা হলে SDL_hid_device এর সাথে সম্পর্কিত libusb হ্যান্ডেলটি পুনরুদ্ধার করার অনুমতি দেয়।

এই উন্নতিগুলি SDL 3.4-তে অন্তর্ভুক্ত থাকা ছাড়াও নতুন স্টিম কন্ট্রোলারের জন্য সমর্থন এর এন্ট্রি ইকোসিস্টেমের মধ্যে, এবং এটি স্টিম রানটাইমের মধ্যে এর ভূমিকা এবং লিনাক্স এবং অন্যান্য প্ল্যাটফর্মে গেমিংয়ের উপর ফোকাসের সাথে খুব ভালভাবে খাপ খায়।

ইভেন্ট, সিস্টেম এবং সাধারণ ইউটিলিটি

গ্রাফিকাল এবং ইনপুট দিকগুলির বাইরে, SDL 3.4 ইভেন্ট সিস্টেম এবং সাধারণ ইউটিলিটিতে বেশ কয়েকটি পরিবর্তনের সূচনা করে যা সম্পর্কে জানা মূল্যবান। উদাহরণস্বরূপ, SDL_EVENT_WINDOW_EXPOSED সম্পর্কে এটি এখন লাইভ উইন্ডো রিসাইজ করার সময় পাঠানো হলে data1 ফিল্ডে true দিয়ে পূর্ণ করে, যা অতিরিক্ত প্রসঙ্গ প্রদান করে।

এটি যুক্ত করে SDL_EVENT_DISPLAY_USABLE_BOUNDS_পরিবর্তিতব্যবহারযোগ্য ডেস্কটপ সীমানা পরিবর্তন হলে (উদাহরণস্বরূপ, টাস্কবার বা প্যানেল সরানোর সময়) এই ইভেন্টটি ট্রিগার হয়। এটি SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN এবং পূর্বে উল্লিখিত পিঞ্চ ইভেন্টগুলিকেও অন্তর্ভুক্ত করে, এইভাবে গতিশীল UI পরিস্থিতির জন্য আরও ব্যাপক ইভেন্ট ইকোসিস্টেম প্রদান করে।

লাভের দিক থেকে, SDL_ইঙ্গিত_মেইন_কলব্যাক_রেট এখন একটি ফ্লোটিং-পয়েন্ট মান হিসেবে সেট করা যেতে পারে, যা আরও নির্ভুলতা প্রদান করে; SDL_অ্যাডঅ্যাটমিকU32() এটি 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যার উপর পারমাণবিক সংযোজনের জন্য সমর্থন যোগ করে; এবং SDL_GetSystemPageSize() সিস্টেম পৃষ্ঠার আকার প্রদান করে, যা নিম্ন-স্তরের মেমরি কাজের জন্য উপযোগী।

এছাড়াও অন্তর্ভুক্ত SDL_অ্যালাইনড()এই ম্যাক্রোটি নির্দেশ করে যে নির্দিষ্ট ডেটার একটি নির্দিষ্ট সারিবদ্ধতা থাকা উচিত, যা কর্মক্ষমতা অপ্টিমাইজেশন এবং SIMD নির্দেশাবলী ব্যবহারের জন্য খুবই প্রাসঙ্গিক। এদিকে, SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER আপনাকে SDL_IOFromMem() এবং SDL_IOFromConstMem() দ্বারা ব্যবহৃত মেমরির জন্য একটি কাস্টম রিলিজ ফাংশন সংজ্ঞায়িত করতে দেয়, যা আপনার নিজস্ব অ্যালোকেটরের সাথে SDL সংহত করার সময় আপনাকে আরও নিয়ন্ত্রণ দেয়।

আরেকটি আকর্ষণীয় উন্নতি হল এর জন্য সমর্থন বিস্তারিত লগ আউটপুট যখন DEBUG_INVOCATION এনভায়রনমেন্ট ভেরিয়েবল "1" তে সেট করা হয়, তখন জটিল প্রেক্ষাপটে লাইব্রেরি ইনিশিয়ালাইজেশন এবং আচরণের গভীর ডিবাগিংয়ের উদ্দেশ্যে।

উইন্ডোজের নির্দিষ্ট উন্নতি

উইন্ডোজে, SDL 3.4-তে অডিও, ভিডিও এবং ইনপুট সিস্টেমকে প্রভাবিত করে এমন উল্লেখযোগ্য পরিবর্তন অন্তর্ভুক্ত রয়েছে। আকর্ষণীয় বিষয়গুলির মধ্যে একটি হল ইঙ্গিত বৈশিষ্ট্য। SDL_HINT_RENDER_DIRECT3D11_WARP সম্পর্কেএটি আপনাকে WARP (D3D11 এর সফ্টওয়্যার রাস্টারাইজার) সক্রিয় করতে দেয়। এটি এমন মেশিনগুলিতে কার্যকর যেখানে কোনও সামঞ্জস্যপূর্ণ GPU নেই বা ভার্চুয়ালাইজড পরিবেশে যেখানে সরাসরি ত্বরণ নেই কিন্তু আপনি এখনও API ব্যবহার করতে চান।

WASAPI ড্রাইভার সুবিধা নেয় SDL_HINT_AUDIO_DEVICE_STREAM_ROLE সম্পর্কে অডিও স্ট্রিম বিভাগ সামঞ্জস্য করার জন্য, সিস্টেম-সামঞ্জস্যপূর্ণ আচরণের জন্য একটি গুরুত্বপূর্ণ ইন্টিগ্রেশন (যেমন, গেম অডিও, যোগাযোগ, ইত্যাদি)। ড্রাইভারের অতিরিক্ত প্রক্রিয়াকরণ প্রয়োগ করা উচিত কিনা তা নির্দেশ করার জন্য এটি SDL_HINT_AUDIO_DEVICE_RAW_STREAM এর উপরও নির্ভর করে।

ইঙ্গিতটি কীবোর্ড ইনপুট সাইডে প্রবেশ করানো হয়। SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYS সম্পর্কেএটি আপনাকে raw ইনপুট ব্যবহার করার সময় নির্দিষ্ট সিস্টেম শর্টকাটগুলি অক্ষম করতে দেয়, যা এমন গেমগুলির জন্য খুবই ব্যবহারিক যেগুলিকে সিস্টেমের হস্তক্ষেপ ছাড়াই কী সমন্বয়গুলি ক্যাপচার করতে হয়। এবং GameInput API স্তরে, SDL_HINT_WINDOWS_GAMEINPUT সম্পর্কে এটি ডিফল্টরূপে নিষ্ক্রিয় থাকে, যা কিছু পরিবেশে সম্ভাব্য দ্বন্দ্ব হ্রাস করে যতক্ষণ না এটি স্পষ্টভাবে কনফিগার করা হয়।

এটিও যোগ করা হয়েছে SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER সম্পর্কে একটি স্ক্রিনের সাথে যুক্ত HMONITOR পেতে, যদি আপনি SDL কে ক্লাসিক Win32 কোডের সাথে মিশ্রিত করেন এবং উইন্ডোজ বা মনিটরের সমন্বয় সাধনের প্রয়োজন হয় তবে এটি খুবই কার্যকর।

ম্যাকওএস, আইওএস এবং ভিশনওএস

macOS-এ, SDL 3.4-তে একটি খুব ব্যবহারিক ইঙ্গিত রয়েছে: SDL_HINT_MAC_PRESS_AND_HOLD সম্পর্কেএই সেটিংটি নিয়ন্ত্রণ করে যে কোনও কী চেপে রাখলে কীস্ট্রোক পুনরাবৃত্তি হবে নাকি অ্যাকসেন্ট মেনু খুলবে। এটি আপনাকে গেম এবং অ্যাপ্লিকেশনগুলির জন্য কীবোর্ড আচরণ সামঞ্জস্য করতে দেয় যেগুলিতে সাধারণ ম্যাকোস অ্যাকসেন্ট মেনুর পরিবর্তে দ্রুত কী পুনরাবৃত্তি প্রয়োজন।

iOS-এ, এখন SDL জানালার দৃশ্য সমর্থন করেএটি "UIKIT এর ক্লায়েন্টের আপডেট প্রয়োজন" সতর্কতা সমাধান করে এবং লাইব্রেরিটিকে আধুনিক UIKit অনুশীলনের সাথে সারিবদ্ধ করে। SDL উইন্ডো তৈরি করার সময় উইন্ডো দৃশ্য নির্দিষ্ট করার জন্য SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER বৈশিষ্ট্যটি চালু করা হয়েছে, যা iOS উইন্ডোিং সিস্টেমে অ্যাপটিকে সঠিকভাবে সংহত করতে সহায়তা করে।

visionOS এবং Apple Vision Pro এর মতো ডিভাইসগুলিতে, SDL 3.4 উইন্ডো আচরণ এবং রিফ্রেশ রেট সামঞ্জস্য করে। ডিফল্ট রিফ্রেশ রেট হল ৯০ হার্জে বৃদ্ধি পায়একটি মসৃণ অভিজ্ঞতা প্রদান করে, এবং SDL_SetWindowSize() কার্যকরভাবে Vision Pro হেডসেটের উইন্ডোর আকার পরিবর্তন করে, মিশ্র বাস্তবতা পরিবেশে লেআউটের উপর আরও নিয়ন্ত্রণ প্রদান করে।

লিনাক্স, ওয়েল্যান্ড, কেএমএস/ডিআরএম এবং ভুলকান

লিনাক্সের জগতে, SDL 3.4 অনেক নতুন বৈশিষ্ট্য নিয়ে আসে। একটি বিষয় হল, এটি যোগ করে KMSDRM-এর জন্য পারমাণবিক সহায়তাএটি কার্নেলের গ্রাফিক্স সাবসিস্টেমের সাথে সরাসরি কাজ করে স্থিতিশীলতা এবং সিঙ্ক্রোনাইজেশন উন্নত করে। এর সাথে সম্পর্কিত, ইঙ্গিত SDL_HINT_KMSDRM_ATOMIC KMSDRM এই পারমাণবিক কার্যকারিতা ব্যবহার করবে কিনা তা নিয়ন্ত্রণ করার অনুমতি দেয়।

ওয়েল্যান্ডের জন্য, নিম্নলিখিতগুলি অন্তর্ভুক্ত করা হয়েছে: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_পয়েন্টারএই বৈশিষ্ট্যটি আপনাকে স্ক্রিনের সাথে যুক্ত wl_output পেতে সাহায্য করে, যা কম্পোজিটরের সাথে গভীর ইন্টিগ্রেশনকে সহজতর করে। এছাড়াও, পাঁচটির বেশি বোতাম সহ ইঁদুরের সমস্যাগুলি সমাধান করা হয়েছে, এবং X11 এর অধীনে নির্ভুল স্ক্রোলিং উন্নত করা হয়েছে, যা স্ক্রোলিংয়ের উপর নির্ভরশীল অ্যাপ্লিকেশনগুলিতে নিয়ন্ত্রণের আরও সূক্ষ্ম ধারণা প্রদান করে।

ভুলকান সম্পর্কে, SDL 3.4 প্রবর্তন করে রেন্ডার ব্যাচিং এবং Vulkan এর মতো API-এর জন্য অন্যান্য উন্নতি, যা অপ্রয়োজনীয় ড্র কল কমায় এবং সামগ্রিক কর্মক্ষমতা উন্নত করে। সেই যুক্তির উপরও কাজ করা হচ্ছে যা সনাক্ত করে আরও শক্তিশালী ভলকান জিপিইউ একাধিক জিপিইউ সহ সিস্টেমে, এটি স্বয়ংক্রিয়ভাবে সবচেয়ে উপযুক্ত ডিভাইসটি বেছে নিতে সাহায্য করে, বিশেষ করে সংহত এবং ডেডিকেটেড জিপিইউ সহ হাইব্রিড বা ল্যাপটপ সিস্টেমে।

অতিরিক্তভাবে, GPU ডিভাইস তৈরি করার সময় Vulkan বিকল্পগুলি কনফিগার করার জন্য SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER বৈশিষ্ট্য যোগ করা হয়, এবং SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN বৈশিষ্ট্যটি ডিভাইস তৈরি করার সময় হার্ডওয়্যার ত্বরণের প্রয়োজন হয়। আরও সিস্টেম-স্তরের স্তরে, SDL এছাড়াও X11 টুলকিট SDL-এর জন্য নিজস্ব X11 টুলকিট হিসেবে X11TK প্রবর্তনের মাধ্যমে।

এমস্ক্রিপ্টেন এবং ব্রাউজার ব্যবহার

SDL 3.4 উল্লেখযোগ্যভাবে এর ইন্টিগ্রেশন উন্নত করে ওয়েব ব্রাউজারে এমস্ক্রিপ্টেন এবং এক্সিকিউশনআপনার গেম বা অ্যাপটি যদি স্ক্র্যাচ থেকে পুনর্লিখন না করে ওয়েবে পোর্ট করতে চান তবে এটি গুরুত্বপূর্ণ। নতুন বৈশিষ্ট্যগুলির মধ্যে একটি হল SDL উইন্ডোটি পূর্ণস্ক্রিন না করেই "ডকুমেন্টটি পূরণ" করতে দেয়।

পূর্ববর্তী সংস্করণে, SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT চালু করা হয়েছিল, এবং চূড়ান্ত প্রকাশে এটি পতাকার চারপাশে পুনর্গঠিত হয়েছে SDL_WINDOW_FILL_DOCUMENT সম্পর্কে এবং SDL_SetWindowFillDocument() ফাংশন, এবং এর সাথে সম্পর্কিত বেশ কিছু বৈশিষ্ট্য রয়েছে। উল্লেখযোগ্য উদাহরণগুলির মধ্যে রয়েছে:

  • SDL দ্বারা ব্যবহৃত ক্যানভাসের আইডি সেট এবং কোয়েরি করার জন্য SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING এবং SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING ব্যবহার করা হয়।
  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN সম্পর্কে এবং SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN, নির্দেশ করতে এবং উইন্ডোটি সম্পূর্ণ ডকুমেন্টটি দখল করে কিনা তা পরীক্ষা করতে।
  • SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING এবং SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING, কীবোর্ড ইনপুটটি যে উপাদানের সাথে সংযুক্ত তা নির্দিষ্ট করতে এবং জিজ্ঞাসা করতে।

এই বিকল্পগুলি খুব সূক্ষ্ম নিয়ন্ত্রণ প্রদান করে SDL কীভাবে DOM এবং ক্যানভাসের সাথে একীভূত হয়?এটি Emscripten-এর সাথে কাজ করার সময় হ্যাক এবং মধ্যবর্তী স্তরগুলি এড়াতে সাহায্য করে। তারা ওয়েব ফ্রেমওয়ার্ক বা আরও জটিল ইন্টিগ্রেশনের সাথে SDL সামঞ্জস্যতা নিশ্চিত করা সহজ করে তোলে যেখানে ক্যানভাস পৃষ্ঠার শুধুমাত্র একটি অংশ।

প্লেস্টেশন ২ এবং অন্যান্য কম সাধারণ প্ল্যাটফর্ম

যদিও এটি আশ্চর্যজনক হতে পারে, SDL 3.4 এছাড়াও মনোযোগ দেয় প্লেস্টেশন ২ এর মতো অভিজ্ঞ প্ল্যাটফর্মগুলিডিসপ্লে প্যারামিটার নিয়ন্ত্রণের জন্য ইঙ্গিত যোগ করা হয়েছে: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE এবং SDL_HINT_PS2_GS_MODE, যা আপনাকে গ্রাফিক্স সিনথেসাইজারের রেজোলিউশন, প্রগতিশীল মোড এবং সাধারণ সেটিংস সামঞ্জস্য করতে দেয়।

এই বিবরণগুলি স্পষ্ট করে যে SDL এখনও একটি অত্যন্ত নমনীয় বিকল্প হোমব্রু প্রকল্প, অনুকরণ, অথবা গবেষণা আধুনিক পিসি, মোবাইল এবং ওয়েবের উপর এর দৃঢ় মনোযোগ ছাড়াও, পুরোনো প্ল্যাটফর্মগুলিতে।

প্রক্রিয়া ব্যবস্থাপনা, ক্যামেরার অনুমতি এবং ELF মেটাডেটা

সিস্টেম স্তরে, SDL 3.4 বৈশিষ্ট্য যোগ করে SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING সম্পর্কেএটি SDL থেকে তৈরি নতুন প্রক্রিয়াগুলির কার্যকরী ডিরেক্টরি কনফিগার করতে ব্যবহৃত হয়। এটি অপারেটিং সিস্টেমের API অ্যাক্সেস না করেই আপনার SDL অ্যাপ্লিকেশন থেকে সাবপ্রসেস বা বহিরাগত সরঞ্জামগুলি চালানো সহজ করে তোলে।

আলোকচিত্রের ক্ষেত্রে, SDL_GetCameraPermissionState() এখন এই ধরণের একটি মান প্রদান করে SDL_CameraPermissionState সম্পর্কে একটি জেনেরিক পূর্ণসংখ্যার পরিবর্তে, মোবাইল এবং ডেস্কটপ প্ল্যাটফর্মে শব্দার্থবিদ্যাকে আরও ভালভাবে সারিবদ্ধ করা এবং অনুমতি ব্যবস্থাপনা সহজতর করা।

ইউনিক্স সিস্টেমে, SDL-তে ELF নোট অন্তর্ভুক্ত থাকে যা এর বর্ণনা দেয় বাধ্যতামূলক নয় এমন লাইব্রেরি সুবিধা systemd.io/ELF_DLOPEN_METADATA এ নথিভুক্ত ফর্ম্যাট অনুসরণ করে, ধারণাটি হল যে বিতরণগুলি এই নোটগুলি বিশ্লেষণ করতে পারে এবং প্যাকেজ-নোটের মতো সরঞ্জামগুলি ব্যবহার করে স্বয়ংক্রিয়ভাবে প্যাকেজিং নির্ভরতা তৈরি করতে পারে। SDL SDL_ELF_NOTE_DLOPEN ম্যাক্রো সরবরাহ করে যাতে অন্যান্য লাইব্রেরি এবং গেমগুলি একই কাজ করতে পারে, যা অনেক পরিষ্কার নির্ভরতা ব্যবস্থাপনাকে সহজতর করে।

উইন্ডোর অগ্রগতি এবং অ্যানিমেটেড কার্সার

ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য, SDL 3.4 এমন বৈশিষ্ট্য যোগ করে যা ডিজাইন করা হয়েছে অগ্রগতি দেখান এবং ইন্টারফেস সমৃদ্ধ করুনউদাহরণস্বরূপ, উইন্ডোজ এবং লিনাক্স টাস্কবারের উইন্ডো আইকনে অগ্রগতি বার প্রদর্শনের জন্য SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState(), এবং SDL_GetWindowProgressValue() চালু করা হয়েছে।

এই বৈশিষ্ট্যটি ব্যবহারকারীকে দেখতে দেয় দীর্ঘস্থায়ী অপারেশনের অবস্থা (ডাউনলোড, আপলোড, অভ্যন্তরীণ বিল্ড ইত্যাদি) এমনকি যদি উইন্ডোটি সামনের দিকে না থাকে। অতিরিক্ত HUD ডিজাইন না করেই প্রতিক্রিয়া প্রদানের এটি একটি বেশ মার্জিত উপায়।

অন্যদিকে, SDL_CreateAnimatedCursor() অনুমতি দেয় অ্যানিমেটেড রঙিন কার্সার তৈরি করুনএটি গেম বা টুলগুলিতে ভিজ্যুয়াল পলিশের ছোঁয়া যোগ করে যেখানে কার্সার অবস্থা (লোডিং, সম্ভাব্য অ্যাকশন, সতর্কতা, ইত্যাদি) যোগাযোগ করে। নতুন ইঙ্গিত SDL_HINT_MOUSE_DPI_SCALE_CURSORS এর সাথে মিলিত, যা এখন ডিফল্টভাবে "0" তে কার্সারগুলিকে DPI-স্কেল করা পরিবেশে অপ্রত্যাশিতভাবে আকার পরিবর্তন থেকে বিরত রাখে, এটি পয়েন্টারের উপস্থিতির উপর আরও অনুমানযোগ্য নিয়ন্ত্রণ প্রদান করে।

এই পরিবর্তনগুলির সাথে - 3D/2D GPU ইন্টিগ্রেশন, নেটিভ PNG সাপোর্ট, ইনপুট এবং অডিও উন্নতি থেকে শুরু করে আধুনিক Linux, Emscripten, visionOS এবং ক্লাসিক কনসোলের দিকে মনোযোগ - SDL 3.4 একটি হিসাবে তার অবস্থানকে দৃঢ় করে তোলে ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্টের জন্য একটি সম্পূর্ণ টুলবক্সবাহ্যিক নির্ভরতা কমানো এবং আপনার নিজের কোডের সাথে সম্পর্কহীন সমস্যাগুলি ডিবাগ করার জন্য সারাদিন ব্যয় না করে পুনরাবৃত্তি করার জন্য একটি শক্ত ভিত্তি প্রদান করা।