DirectX بخشی از سیستم عامل ویندوز است. پس چرا هر بازی کامپیوتری که نصب میکنید، یک نسخه از DirectX مخصوص به خودش را بر روی سیستم کپی میکند؟
DirectX چیست؟
DirectX در واقع مجموعهای از APIها (رابطهای برنامهنویسی اپلیکیشن) است که توسعهدهندگان نرمافزارها برای ساخت طرحهای سه بعدی، ویدیوها، فایلهای صوتی و چندرسانهای و همچنین شخصیتهای بازیها از آن استفاده میکنند. اکثر بازیهای ویندوزی از نسخه DirectX Direct3D برای جلوههای گرافیکی استفاده میکنند. برخی هم به جای این نسخه از پلتفرمهای OpenGL یا Vulkan بهره میگیرند.
بهصورت پیشفرض DirectX 11 در ویندوز 7 و DirectX 12 در ویندوز 10 قرار دارند. هنگامی که توسعه دهندگان قصد ایجاد یک بازی را داشته باشند، نسخهای از DirectX را انتخاب میکنند که آنها را سریعتر و سادهتر به هدفشان برساند. حال بهعنوان مثال اگر نسخه DirectX استفاده شده برای نوشتن یک بازی، نسخه 11 باشد، این بازی قابلیت اجرا در ویندوز XP را نخواهد داشت، چرا که آخرین نسخه DirectX در ویندوز XP، نسخه 9 است.
اگر میخواهید نسخه DirectX نصب شده بر روی سیستم عامل ویندوز را مشاهده کنید، بر روی منو Start کلیک کرده و عبارت dxdiag را تایپ کنید. سپس کلید Enter را فشار دهید. در پنجرهای که باز میشود به برگه System بروید. در زیر قسمت System Information و در مقابل گزینه DirectX Version میتوانید نسخه DirectX نصب شده بر روی سیستم عامل خود را مشاهده نمایید.
اگر DirectX در ویندوز وجود دارد، چرا بازیها هم آن را نصب میکنند؟
پاسخ ساده است. یک کتابخانه DirectX واحد برای تمام بازیها وجود ندارد. توسعه دهندگان بازیها مجبور هستند یک نسخه خاص از Direct3D را برای طراحی بازی مد نظر قرار دهند. در این صورت سیستمی که از نسخه دیگری استفاده میکند، نمیتواند بازی را اجرا نماید. بهعنوان مثال فرض کنید که یک کمپانی، برای ایجاد بازی از کتابخانه d3ddx10_40.dll استفاده کرده باشد. بنابراین این بازی نمیتواند از d3ddx10_41.dll استفاده نماید.
این فایلها را میتوانید از مسیر C:\Windows\System32 در سیستم عامل ویندوز بیابید. در سیستم عاملهای 64 بیتی، کتابخانههای 64 بیتی در مسیر C:\Windows\System32 و کتابخانههای 32 بیتی در مسیر C:\Windows\SysWOW64 قرار دارند.
حتی اگر آخرین نسخه DirectX بر روی سیستم عامل شما وجود داشته باشد، هیچ تضمینی وجود ندارد که تمام نسخههای مربوط به کتابخانههای قدیمی DirectX نیز نصب شده باشند. مایکروسافت نیز تصمیم گرفته که فایلهای کتابخانه Direct3D را به همراه خود سیستم عامل ویندوز ارائه نکند. به عنوان مثال کتابخانههای Direct3D که پیش از انتشار ویندوز 10 ایجاد شدهاند، همگی آنها در این سیستم عامل قرار نگرفته و باید بهوسیله برنامهای که برای اجرا به آنها نیاز دارد، نصب شوند. همچنین مایکروسافت خطاب به توسعهدهندگان بازیهای کامپیوتری اعلام کرده است که آپدیتهایی که این کمپانی برای ویندوز ارائه میکند، شامل هیچ مولفهای برای بروزرسانی DirectX نخواهند بود.
نکته قابل توجه اینجا است که بازیهای 32 بیتی برای اجرا به نسخههای 32 بیتی DirectX نیاز دارند و همینطور بازیهای 64 بیتی نیز فقط با نسخههای 64 بیتی DirectX اجرا خواهند شد.
آیا میتوان این کتابخانهها را از سیستم پاک کرد؟!
به یاد داشته باشید که هیچ یک از کتابخانههای DirectX را از پوشههای SysWOW64 و System32 حذف نکنید. اگر هر یک از این کتابخانهها در سیستم عامل شما نصب شده و وجود دارند، به این دلیل است که یک بازی یا برنامه خاص برای اجرا شدن به آنها نیاز دارد. بنابراین اگر کتابخانهای را پاک کنید، برنامه یا بازی مربوط به آن نیز اجرا نخواهد شد.
چرا بازیهای کامپیوتری باید DirectX مخصوص به خود را مجددا نصب نمایند؟
همانطور که اشاره شد، هر یک از بازیهای کامپیوتری باید کتابخانههای مربوط به نسخه DirectX مختص خود را نصب کنند. ولی اگر این کتابخانه در حال حاضر بر روی سیستم وجود داشته باشد، مسلما دیگر نیازی نیست که بازی در هنگام نصب، مجددا DirectX را نصب نماید، درست است؟
خیر. اینطور نیست. در واقع برای یک بازی ساده نیست که در هنگام نصب، نسخه DirectX و کتابخانههای نصب شده بر روی سیستم را بررسی کند. بنابراین هر بازی در زمان نصب شدن، بدون در نظر گرفتن فایلهای کتابخانه DirectX موجود، نسخه DirectX مورد نیاز خود را نصب میکند.
همچنین برنامه نصب کننده DirectX مایکروسافت (DirectX installer)، تنها روشی است که مایکروسافت به توسعه دهندگان اجازه میدهد تا فایلها و کتابخانههای مورد نیاز خود را نصب کنند.
البته تمام بازیها نیز مجبور نیستند که نصب کننده DirectX را اجرا کنند. بازیهایی که از OpenGL و Vulkan به جای DirectX استفاده میکنند، نیازی به اجرای این برنامه ندارند.