ویرگول
ورودثبت نام
قاسم رمضانی‌منش
قاسم رمضانی‌منش.Junior Software Engineer at Arad Co
قاسم رمضانی‌منش
قاسم رمضانی‌منش
خواندن ۱ دقیقه·۵ سال پیش

شاه‌کار دیگه‌ای از id Software


کمپانی id Software به حرکت زیباشون توی محاسبهٔ Inverse Square Root به سبک سامورایی بین بچه‌های گرافیک سه‌بعدی خیلی خوب مشهور هستند:

  • Fast Inverse Square Root In Quake III Arena

داشتم کد بازی Wolfenstein 3D رو نگاه می‌کردم که به این ماکروی عجیب ISPOINTER بر خوردم:

  • #define ISPOINTER(x) ((((uintptr_t)(x)) & ~0xffff) != 0)

خیلی جالبه که اینقدر دقیق روی معماری پلتفرم مقصدشون حساب می‌کردند که حتماً Layout اشاره‌گرهاشون به این‌صورت هست که بتونند دادهٔ بیشتری داخلش ذخیره بکنند و اینقدر راحت هم بررسی بکنند آیا داده‌ای داخلش Valid هست یا نه. داخل Kernel Linux هم از این کارها انجام مید‌ند، ولی خب اونا مختص یک پلتفرم نوشته شده و دقیقاً‌ حالات مختلف رو رعایت کردند.

  • How to determine if a variable is a pointer in the id Software programmers way?



cpp
۰
۰
قاسم رمضانی‌منش
قاسم رمضانی‌منش
.Junior Software Engineer at Arad Co
شاید از این پست‌ها خوشتان بیاید