مكتبة رسومات ثلاثية الأبعاد منصة ثلاثية الأبعاد الحديثة وإطار عرض
المحرك المجيد عبارة عن مكتبة تجريد رسومات خفيفة الوزن عبر النظام الأساسي وإطار عرض. تم تصميمه للاستفادة الكاملة من Direct3D12 و Vulkan و Metal و WebGPU ، مع دعم المنصات القديمة عبر Direct3D11 و OpenGles و OpenGles و WebGL. يكشف المحرك المجيد API الشائع في الواجهة الأمامية ويستخدم HLSL كلغة تظليل عالمية على جميع المنصات وتقديم النهايات الخلفية. يمكن استخدام تمثيلات التظليل الخاصة بالمنصة (GLSL ، MSL ، DX Bytecode أو Spirv) مع الانحدار الخلفي المقابل. يهدف المحرك إلى استخدامه كنظام رسومات فرعي في محرك لعبة أو أي تطبيق ثلاثي الأبعاد آخر. يتم توزيعه بموجب ترخيص Apache 2.0 وهو مجاني للاستخدام.
منصة | D3D11 | D3D12 | OpenGL/GLES | فولكان | معدن | WebGPU | بناء الحالة |
---|---|---|---|---|---|---|---|
![]() | ✔ | ✔ | ✔ | ✔ | - | ✔ 3 | ![]() |
![]() | ✔ | ✔ | - | - | - | - | ![]() |
![]() | - | - | ✔ | ✔ | - | ✔ 3 | ![]() |
![]() | - | - | ✔ | ✔ | - | - | ![]() |
![]() | - | - | ✔ | ✔ 1 | ✔ 2 | ✔ 3 | ![]() |
![]() | - | - | ✔ | ✔ 1 | ✔ 2 | - | ![]() |
![]() | - | - | - | ✔ 1 | ✔ 2 | - | ![]() |
![]() | - | - | ✔ | - | - | ✔ | ![]() |
لا يتم دعم 1 Vulkan API أصليًا على منصات MACOS و IOS و TVOS ويتطلب تطبيقًا لقابلية النقل Vulkan مثل MoltenVK أو GFX-portability.
2 متاح بموجب الترخيص التجاري - يرجى الاتصال بنا للحصول على التفاصيل.
3 يتطلب تنفيذًا أصليًا لـ WebGPU ، يوصى بالفجر.
#if defined(_WIN32)
... #elif defined(LINUX)
... #elif defined(ANDROID)
...#if defined(D3D11)
... #elif defined(D3D12)
... #elif defined(OPENGL)
...الحد الأدنى المدعوم من إصدارات API منخفضة المستوى:
هذا هو المستودع الرئيسي الذي يحتوي على أربع علامات فرعية. للحصول على المستودع وجميع العلامات الفرعية ، استخدم الأمر التالي:
git clone --recursive https://github.com/DiligentGraphics/DiligentEngine.git
عند تحديث المستودع الموجود ، لا تنس تحديث جميع النماذج الفرعية:
git pull
git submodule update --recursive
من الجيد أيضًا إعادة تشغيل Cmake وأداء إعادة بناء نظيفة بعد الحصول على أحدث إصدار.
يتضمن المستودع الرئيسي العارض الفرعي التالي:
يستخدم المحرك الدؤوب Cmake كأداة إنشاء منصة. لبدء استخدام CMake ، قم بتنزيل أحدث إصدار (3.20 أو الأحدث مطلوب). البناء آخر الشرط المسبق هو المترجم Python (3.0 أو الأحدث مطلوب). إذا بعد اتباع الإرشادات أدناه ، لديك مشكلات في إنشاء/تشغيل ، فيرجى إلقاء نظرة على استكشاف الأخطاء وإصلاحها.
بناء المتطلبات الأساسية:
يتطلب دعم .NET .NET SDK 6.0 أو الأحدث.
استخدم إما CMake GUI أو أداة سطر الأوامر لإنشاء ملفات إنشاء. على سبيل المثال ، لإنشاء Visual Studio 2022 64 بت وملفات المشروع في مجلد Build/Win64 ، انتقل إلى مجلد جذر المحرك وتشغيل الأمر التالي:
cmake -S . -B ./build/Win64 -G "Visual Studio 17 2022" -A x64
يمكنك إنشاء حل Win32 الذي يستهدف Win8.1 SDK باستخدام الأمر التالي:
cmake -D CMAKE_SYSTEM_VERSION=8.1 -S . -B ./build/Win64_8.1 -G "Visual Studio 17 2022" -A x64
إذا كنت تستخدم MINGW ، فيمكنك إنشاء ملفات صنع باستخدام الأمر أدناه (لاحظ أن الوظيفة ستكون محدودة وأن MINGW ليس وسيلة موصى بها لبناء المحرك):
cmake -S . -B ./build/MinGW -D CMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"
لتمكين طبقات التحقق من صحة Vulkan ، ستحتاج إلى تنزيل Vulkan SDK وإضافة متغير البيئة VK_LAYER_PATH
الذي يحتوي على المسار إلى دليل BIN في مجلد تثبيت Vulkansdk.
افتح ملف DidigentEngine.sln في مجلد Build/Win64 ، حدد التكوين وإنشاء المحرك. قم بتعيين المشروع المطلوب كمشروع بدء تشغيل (افتراضيًا ، سيتم اختيار GLTF Viewer) وتشغيله.
بشكل افتراضي ، ستظهر تطبيقات العينة والبرنامج التعليمي مربع حوار اختيار الواجهة الخلفية. استخدم خيارات سطر الأوامر التالية لإجبار D3D11 أو D3D12 أو OpenGL أو Vulkan Mode: -وضع D3D11 أو -وضع D3D12 أو -وضع GL أو -Mode VK . إذا كنت ترغب في تشغيل تطبيق خارج Visual Studio Environment ، فيجب تعيين مجلد أصول التطبيق كدليل عمل. (بالنسبة للاستوديو المرئي ، يتم تكوين هذا تلقائيًا بواسطة CMake). بدلاً من ذلك ، يمكنك الانتقال إلى هدف البناء أو تثبيت المجلد وتشغيل المجلد القابل للتنفيذ من هناك.
لإنشاء ملفات إنشاء لمنصة Windows Universal ، تحتاج إلى تحديد متغيري cmake التاليين:
CMAKE_SYSTEM_NAME=WindowsStore
CMAKE_SYSTEM_VERSION=< Windows Version >
على سبيل المثال ، لإنشاء Visual Studio 2022 64 بت وملفات المشروع في مجلد Build/UWP64 ، قم بتشغيل الأمر التالي من مجلد جذر المحرك:
cmake -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0 -S . -B ./build/UWP64 -G "Visual Studio 17 2022" -A x64
قم بتعيين المشروع المطلوب كمشروع بدء تشغيل (افتراضيًا ، سيتم اختيار GLTF Viewer) وتشغيله.
بشكل افتراضي ، سيتم تشغيل التطبيقات في وضع D3D12. يمكنك تحديد D3D11 أو D3D12 باستخدام خيارات سطر الأوامر التالية: -وضع D3D11 ، -وضع D3D12 .
ملاحظة: من الممكن إنشاء حل يستهدف Windows 8.1 عن طريق تحديد CMake_System_Version = 8.1 Cmake Variable ، لكنه سيفشل في الإنشاء لأنه سيستخدم مجموعة أدوات Visual Studio 2013 (V120) التي تفتقر إلى دعم C ++ 14 المناسب.
يجب إعداد بيئة Linux الخاصة بك لتطوير C ++. إذا كان الأمر كذلك بالفعل ، فتأكد من أن أدوات C ++ الخاصة بك محدثة حيث يستخدم المحرك الدؤوب ميزات C ++ الحديثة (يوصى بـ Clang 10 أو الأحدث).
قد تحتاج إلى تثبيت الحزم التالية:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libx11-dev
sudo apt-get install mesa-common-dev
sudo apt-get install mesa-utils
sudo apt-get install libgl-dev
sudo apt-get install python3-distutils
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libxrandr-dev
sudo apt-get install libxinerama-dev
sudo apt-get install libxcursor-dev
sudo apt-get install libxi-dev
لتكوين Vulkan ستحتاج أيضًا إلى:
لإنشاء ملفات إنشاء تكوين التصحيح ، قم بتشغيل أمر CMAKE التالي من مجلد جذر المحرك:
cmake -S . -B ./build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"
لبناء المحرك ، قم بتشغيل الأمر التالي:
cmake --build ./build
على Ubuntu 23 وأحدث ، قد يعطل إذا لم يكن لديك LIBTINFO5 مثبت ، ستحتاج إلى إضافته.
يحتوي المجلد الجذر للمحرك على ملفات إعدادات رمز Visual Studio التي تقوم بتكوين IDE لإنشاء المحرك. يمكنك تشغيل التطبيقات مباشرة من IDE. لتشغيل تطبيق من سطر الأوامر ، يجب أن يكون مجلد أصول التطبيق الدليل الحالي.
يرجى التأكد من إعداد جهازك لتطوير Android. قم بتنزيل Android Studio ، وتثبيت وتكوين NDK و CMake وغيرها من الأدوات المطلوبة. NDK R24 أو الأحدث مطلوب. إذا كنت لا تستخدم إصدار CMake معدة مع Android Studio ، فتأكد من تكوين ملفات الإنشاء الخاصة بك بشكل صحيح. للتحقق من أن بيئتك تم إعدادها بشكل صحيح ، حاول إنشاء عينة من أقداح الشاي وكذلك دروس Vulkan Android.
افتح مجلدات الجيد/Android مع Android Studio لإنشاء وتشغيل البرامج التعليمية والعينات على Android.
بشكل افتراضي ، سيتم تشغيل التطبيقات في وضع Vulkan. لتشغيلها في وضع Vulkan ، أضف أعلام التشغيل التالية: --es mode gles
(في Android Studio ، انتقل إلى Run-> تحرير القائمة التكوينات)
المتطلبات الأساسية:
بعد استنساخ الريبو ، قم بتشغيل الأمر التالي من مجلد جذر المحرك لإنشاء مشروع Xcode:
cmake -S . -B ./build/MacOS -G "Xcode"
سيكون المشروع موجودًا في مجلد build/MacOS
.
لاحظ أنه إذا فشل Cmake في العثور على المترجم ، فقد تحتاج إلى تشغيل الأمر التالي:
sudo xcode-select --reset
افتراضيًا ، لا يوجد تطبيق Vulkan على MacOS. يحمل المحرك الدؤوب Vulkan ديناميكيًا ويمكنه استخدام تنفيذ قابلية النقل Vulkan مثل MoltenVK أو GFX-portability. قم بتثبيت Vulkansdk وتأكد من تكوين نظامك بشكل صحيح كما هو موضح هنا. على وجه الخصوص ، قد تحتاج إلى تحديد متغيرات البيئة التالية (على افتراض أن Vulkan SDK مثبتة على /Users/MyName/VulkanSDK/1.3.290.0
myname/vulkansdk/1.3.290.0 وتريد استخدام moltenvk):
export VULKAN_SDK=/Users/MyName/VulkanSDK/1.3.290.0/macOS
export PATH=$VULKAN_SDK/bin:$PATH
export DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH
export VK_ADD_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d
export VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json
export VK_DRIVER_FILES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json
لاحظ أن متغيرات البيئة المحددة في shell لا تُرى من قبل التطبيقات التي تم إطلاقها من منصة Launchpad أو غيرها من واجهة المستخدم الرسومية. وبالتالي للتأكد من أن التطبيق يجد مكتبات Vulkan ، يجب أن تبدأ من سطر الأوامر. بسبب نفس السبب ، يجب أيضًا فتح ملف مشروع XCode من shell باستخدام الأمر open
. مع إصدارات Xcode 7 وبعد ذلك ، قد يلزم تمكين هذا السلوك أولاً باستخدام الأمر التالي:
defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
يرجى الرجوع إلى هذه الصفحة لمزيد من التفاصيل.
DYLD_LIBRARY_PATH
و LD_LIBRARY_PATH
على MACOS ما لم يتم تعطيل حماية سلامة النظام (وهو ما لا ينصح به عمومًا). لكي يجد التنفيذيون مكتبة Vulkan ، يجب أن تكون في RPATH. إذا تم تعيين متغير بيئة VULKAN_SDK
ويشير إلى تصحيح الموقع ، فسيقوم المحرك المجيد بتكوين RPTH لجميع التطبيقات تلقائيًا.
أحدث إصدار تم اختباره Vulkan SDK: 1.3.290.0.
المتطلبات الأساسية:
قم بتشغيل الأمر أدناه من مجلد جذر المحرك لإنشاء مشروع Xcode الذي تم تكوينه لبناء iOS:
cmake -S . -B ./build/iOS -DCMAKE_SYSTEM_NAME=iOS -G "Xcode"
إذا لزم الأمر ، يمكنك توفير هدف نشر iOS (13.0 أو الأحدث مطلوب) بالإضافة إلى المعلمات الأخرى ، على سبيل المثال:
cmake -S . -B ./build/iOS -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=13.0 -G "Xcode"
iphonesimulator
. يمكنك أيضًا استخدام متغير CMAKE_OSX_ARCHITECTURES
لتحديد بنية الهدف ، على سبيل المثال:
cmake -S . -B ./build/iOSSim -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=arm64 -G "Xcode"
افتح ملف مشروع Xcode في مجلد build/IOS
وإنشاء المحرك. لتشغيل التطبيقات على جهاز iOS ، ستحتاج إلى تعيين فريق التطوير المناسب في إعدادات المشروع.
لتمكين Vulkan على iOS ، قم بتنزيل وتثبيت Vulkansdk. لا يوجد محمل Vulkan على iOS ، وربط المحرك الدؤوب مباشرة مع Moltenvk Xcframework (انظر دليل تثبيت Moltenvk) الذي ينفذ Vulkan على المعادن. لتمكين Vulkan في المحرك الدؤوب على iOS ، حدد المسار إلى Vulkan SDK عند تشغيل Cmake ، على سبيل المثال (على افتراض أن Vulkan SDK مثبت على /Users/MyName/VulkanSDK/1.3.290.0
myname/vulkansdk/1.3.290.0):
cmake -DCMAKE_SYSTEM_NAME=iOS -DVULKAN_SDK=/Users/MyName/VulkanSDK/1.3.290.0 -S . -B ./build/iOS -G "Xcode"
بشكل افتراضي ، يرتبط المحرك مع Moltenvk Xcframework الموجود في Vulkan SDK. إذا لم يكن هذا مطلوبًا أو يريد تطبيق ما استخدام مكتبة معينة ، فيمكنه توفير المسار الكامل للمكتبة عبر متغير MOLTENVK_LIBRARY
Cmake.
ارجع إلى دليل مستخدم Moltenvk لمزيد من المعلومات حول تثبيت MoltenVK والاستخدام.
أحدث إصدار تم اختباره Vulkan SDK: 1.3.290.0.
بناء المتطلبات الأساسية:
لتفعيل المسار ومتغيرات البيئة الأخرى في المحطة الحالية
source ${PATH_TO_EMSDK} /emsdk/emsdk_env.sh
${PATH_TO_EMSDK}/emsdk/emsdk_env.bat
بدلاً من source ${PATH_TO_EMSDK}/emsdk/emsdk_env.sh
لإنشاء مشروع ، قم بتشغيل أمر CMAKE التالي من مجلد جذر المحرك:
emcmake cmake -S . -B ./build/Emscripten -G "Ninja"
لبناء المحرك ، قم بتشغيل الأمر التالي:
cmake --build ./build/Emscripten
لاختبار تطبيقات emscripten ، قم بتشغيل خادم ويب أساسي
cd ./build/Emscripten
python https_server.py
افتح متصفحًا وانتقل إلى http://localhost
على سبيل المثال ، سيكون برنامج Hello Triangle Tutorial متاحًا على
http://localhost/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html
للوصول إلى الخادم من جهاز كمبيوتر آخر على الشبكة المحلية ، استخدم خادم HTTPS. لتمكين هذا ، قم أولاً بتثبيت وحدة cryptography
. يمكنك القيام بذلك عن طريق تشغيل الأمر التالي:
pip install cryptography
لبدء خادم HTTPS ، استخدم الأمر التالي:
python https_server.py --mode=https
استخدم بروتوكول HTTPS لفتح الصفحات. على سبيل المثال:
https://localhost/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html
عند استخدام خادم HTTPS ، على عكس خادم HTTP ، يمكنك مواجهة الخطأ التالي عند تحميل الصفحة: net::ERR_CERT_AUTHORITY_INVALID
.
هناك طريقتان لحل هذه المشكلة:
Advanced
ثم حدد Proceed to localhost (unsafe)
.python https_server.py --mode=https --register
نستخدم المنافذ الافتراضية لبروتوكولات HTTP/HTTPS ، 80
و 443
على التوالي. إذا كان لديك بالفعل خادم يعمل على هذه المنافذ ، فيمكنك تحديد رقم منفذ مختلف باستخدام وسيطة --port
وتضمين رقم المنفذ المقابل في عنوان URL بعد عنوان IP. على سبيل المثال:
http://localhost:${YOUR_PORT}/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html
يحتوي Deligent على بنية معيارية ، لذلك لمشروعك ، يمكنك فقط استخدام هذه النسيحات الفرعية التي تنفذ الوظيفة المطلوبة. يوضح الرسم البياني أدناه التبعيات بين الوحدات النمطية.
Core
|
+------>Tools----------.
| | |
| V |
+------->FX---------. |
| | |
| V V
'----------------->Samples
لا تنسَ تهيئة العوامل الفرعية بشكل متكرر إذا كنت تضيف إعادة التجزئة كزواج فرعي إلى مشروعك.
إذا كان مشروعك يستخدم CMake ، فإن إضافة المحرك الدؤوب يتطلب فقط بضعة أسطر من التعليمات البرمجية. لنفترض أن بنية الدليل تبدو هكذا:
|
+-DiligentCore
+-HelloDiligent.cpp
ثم يجب القيام بالخطوات التالية:
add_subdirectory(DiligentCore)
فيما يلي مثال على ملف cmake:
cmake_minimum_required ( VERSION 3.6)
project (HelloDiligent CXX)
add_subdirectory (DiligentCore)
add_executable (HelloDiligent WIN32 HelloDiligent.cpp)
target_compile_options (HelloDiligent PRIVATE -DUNICODE)
target_link_libraries (HelloDiligent
PRIVATE
Diligent-GraphicsEngineD3D11-shared
Diligent-GraphicsEngineOpenGL-shared
Diligent-GraphicsEngineD3D12-shared
Diligent-GraphicsEngineVk-shared
)
copy_required_dlls(HelloDiligent)
copy_required_dlls()
هي وظيفة راحة تقوم بنسخ المكتبات المشتركة بجوار القابل للتنفيذ حتى يتمكن النظام من العثور عليها وتحميلها. يرجى أيضًا إلقاء نظرة على البدء في البرامج التعليمية لنظام التشغيل Windows و Linux.
على معظم المنصات ، تم تصميم مكتبات المحرك الأساسية في كل من الإصدارات الثابتة والديناميكية (على سبيل المثال Diligent-GraphicsEngineD3D12-static
و Diligent-GraphicsEngineD3D12-shared
). يمكنك اختيار الإصدار الذي يجب ربطه من خلال تغيير الاسم الهدف في الأمر target_link_libraries()
CMake. عند الارتباط بالمكتبات الديناميكية ، سيتم تعريف ماكرو ENGINE_DLL
، وسيحتاج المكتبات إلى تحميلها في وقت التشغيل. على سبيل المثال ، للواجهة الخلفية Direct3D12:
# if ENGINE_DLL
// Load the dll and import GetEngineFactoryD3D12() function
auto GetEngineFactoryD3D12 = LoadGraphicsEngineD3D12();
# endif
auto * pFactoryD3D12 = GetEngineFactoryD3D12();
عند استخدام الربط الثابت ، لن يتم تحديد MACRO ENGINE_DLL
، وسيتم ربط وظيفة GetEngineFactoryD3D12
بشكل ثابت مع القابل للتنفيذ.
يقدم ملف Sampleapp.cpp مثالًا على كيفية تهيئة المحرك على منصات مختلفة باستخدام الربط الثابت أو الديناميكي.
يمكنك استخدام FetchContent لتنزيل وحدات المحرك الدؤوبة. التحذير الوحيد هو أنك تحتاج إلى تحديد دليل المصدر لكل وحدة ليكون هو نفس اسم الوحدة ، بحيث يمكن العثور على ملفات الرأس. فيما يلي مثال على ملف CMake الذي يستخدم FetchContent:
cmake_minimum_required ( VERSION 3.6)
project (HelloDiligent CXX)
include (FetchContent)
FetchContent_Declare(
DiligentCore
GIT_REPOSITORY https://github.com/DiligentGraphics/DiligentCore.git
SOURCE_DIR _deps/DiligentCore
)
FetchContent_Declare(
DiligentTools
GIT_REPOSITORY https://github.com/DiligentGraphics/DiligentTools.git
SOURCE_DIR _deps/DiligentTools
)
FetchContent_Declare(
DiligentFX
GIT_REPOSITORY https://github.com/DiligentGraphics/DiligentFX.git
SOURCE_DIR _deps/DiligentFX
)
FetchContent_MakeAvailable(DiligentCore DiligentTools DiligentFX)
add_executable (HelloDiligent WIN32 HelloDiligent.cpp)
target_include_directories (HelloDiligent
PRIVATE
${diligentcore_SOURCE_DIR}
${diligenttools_SOURCE_DIR}
${diligentfx_SOURCE_DIR}
)
target_compile_definitions (HelloDiligent PRIVATE UNICODE)
target_link_libraries (HelloDiligent
PRIVATE
Diligent-BuildSettings
Diligent-GraphicsEngineD3D11-shared
Diligent-GraphicsEngineD3D12-shared
Diligent-GraphicsEngineOpenGL-shared
Diligent-GraphicsEngineVk-shared
DiligentFX
)
copy_required_dlls(HelloDiligent)
إذا لم يستخدم مشروعك CMake ، فمن المستحسن إنشاء مكتبات مع CMake وإضافتها إلى نظام الإنشاء الخاص بك. يمكنك تنزيل أحدث القطع الأثرية من GitHub.
يتم التحكم في دليل تثبيت CMAKE العالمي بواسطة متغير CMAKE_INTALL_PREFIX. لاحظ أنه يتخلف عن /usr/local
على c:/Program Files/${PROJECT_NAME}
على Windows ، والتي قد لا تكون ما تريد. استخدم -D CMAKE_INSTALL_PREFIX=install
لاستخدام مجلد install
المحلي بدلاً من ذلك:
cmake -S . -B ./build/Win64 -D CMAKE_INSTALL_PREFIX=install -G "Visual Studio 17 2022" -A x64
لتثبيت المكتبات وملفات الرأس ، قم بتشغيل أمر CMake التالي من مجلد Build:
cmake --build . --target install
سيحتوي دليل تثبيت DIDEGENTCORE على كل ما هو مطلوب لدمج المحرك:
طريقة أسهل هي الارتباط بالمكتبات الديناميكية. عند الارتباط بشكل ثابت ، ستحتاج إلى سرد DidigentCore بالإضافة إلى جميع مكتبات الطرف الثالث الذي يستخدمه المحرك. إلى جانب ذلك ، ستحتاج أيضًا إلى تحديد مكتبات النظام الخاصة بالنظام الأساسي. على سبيل المثال ، بالنسبة لنظام التشغيل Windows ، فإن قائمة المكتبات التي سيحتاج مشروعك إلى الارتباط معها قد تبدو على هذا النحو:
DiligentCore.lib glslang.lib HLSL.lib OGLCompiler.lib OSDependent.lib spirv-cross-core.lib SPIRV.lib SPIRV-Tools-opt.lib SPIRV-Tools.lib glew-static.lib GenericCodeGen.lib MachineIndependent.lib dxgi.lib d3d11.lib d3d12.lib d3dcompiler.lib opengl32.lib
تتطلب رؤوس المحرك المجاد أن يتم تعريف أحد وحدات الماكرو التالية للمنصة على أنها 1
: PLATFORM_WIN32
، PLATFORM_UNIVERSAL_WINDOWS
، PLATFORM_ANDROID
، PLATFORM_LINUX
، PLATFORM_MACOS
، PLATFORM_IOS
.
يمكنك التحكم في مكونات المحرك التي تريد تثبيتها باستخدام خيارات CMake التالية: DILIGENT_INSTALL_CORE
، DILIGENT_INSTALL_FX
، DILIGENT_INSTALL_SAMPLES
، و DILIGENT_INSTALL_TOOLS
.
هناك طريقة أخرى لدمج المحرك وهي إنشاء ملفات إنشاء (مثل مشاريع Visual Studio) وإضافتها إلى نظام الإنشاء الخاص بك. بناء تخصيص الموصوف أدناه يمكن أن يساعد في تعديل الإعدادات لتلبية احتياجاتك الخاصة.
يتم تلخيص خيارات CMAKE المتاحة في الجدول أدناه:
خيار | القيمة الافتراضية | وصف |
---|---|---|
DILIGENT_NO_DIRECT3D11 | لا | لا تنشئ الخلفية direct3d11 |
DILIGENT_NO_DIRECT3D12 | لا | لا تبني Direct3D12 الخلفية الخلفية |
DILIGENT_NO_OPENGL | لا | لا تبني خلفية OpenGL |
DILIGENT_NO_VULKAN | لا | لا تبني الواجهة الخلفية للفولكان |
DILIGENT_NO_METAL | لا | لا تبني الخلفية المعدنية |
DILIGENT_NO_WEBGPU | لا | لا تبني webgpu الخلفية |
DILIGENT_NO_ARCHIVER | لا | لا تبني أرشيف |
DILIGENT_NO_RENDER_STATE_PACKAGER | لا | لا تقم ببناء أداة حزمة الحالة |
DILIGENT_ENABLE_DRACO | لا | تمكين دعم ضغط Draco في Loader GLTF |
DILIGENT_USE_RAPIDJSON | لا | استخدم محلل Rapidjson في GLTF Loader |
DILIGENT_BUILD_TOOLS | نعم | إنشاء وحدة أدوات |
DILIGENT_BUILD_FX | نعم | بناء وحدة FX |
DILIGENT_BUILD_SAMPLES | نعم | بناء عينات العينات |
DILIGENT_BUILD_SAMPLE_BASE_ONLY | لا | قم ببناء مشروع SampleBase فقط ولا توجد عينات/دروس أخرى |
DILIGENT_BUILD_TESTS | لا | بناء اختبارات الوحدة |
DILIGENT_NO_GLSLANG | لا | لا تبني glslang و spriv tools |
DILIGENT_NO_HLSL | لا | تعطيل دعم HLSL في الخلفية غير المائية 3D |
DILIGENT_NO_FORMAT_VALIDATION | نعم | تعطيل التحقق من صحة رمز المصدر |
DILIGENT_LOAD_PIX_EVENT_RUNTIME | لا | تمكين دعم حدث PIX |
DILIGENT_NVAPI_PATH | طريق إلى NVAPI SDK | |
DILIGENT_INSTALL_CORE | نعم | تثبيت الوحدة الأساسية |
DILIGENT_INSTALL_TOOLS | نعم | تثبيت وحدة أدوات |
DILIGENT_INSTALL_FX | نعم | تثبيت وحدة FX |
DILIGENT_INSTALL_SAMPLES | نعم | تثبيت وحدة العينات |
DILIGENT_INSTALL_PDB | لا | تثبيت قاعدة بيانات تصحيح البرنامج |
DILIGENT_DEAR_IMGUI_PATH | مسار اختياري لمشروع Imgui العزيز الذي يقدمه المستخدم | |
DILIGENT_ARGS_DIR | مسار اختياري لمشروع args المقدم من المستخدم | |
DILIGENT_NUKLEAR_DIR | مسار اختياري لمشروع nuklear الذي يقدمه المستخدم | |
DILIGENT_MSVC_COMPILE_OPTIONS | خيارات تجميع MSVC إضافية لجميع التكوينات | |
DILIGENT_MSVC_DEBUG_COMPILE_OPTIONS | خيارات تجميع MSVC إضافية لتكوين التصحيح | |
DILIGENT_MSVC_RELEASE_COMPILE_OPTIONS | /GL /ARCH: AVX2 | خيارات تجميع MSVC إضافية لتكوينات الإصدار |
DILIGENT_CLANG_COMPILE_OPTIONS | خيارات تجميع Clang إضافية لجميع التكوينات | |
DILIGENT_CLANG_DEBUG_COMPILE_OPTIONS | خيارات تجميع Clang إضافية لتكوين التصحيح | |
DILIGENT_CLANG_RELEASE_COMPILE_OPTIONS | -Mavx2 | خيارات تجميع Clang إضافية لتكوينات الإصدار |
DILIGENT_USD_PATH | مسار إلى مجلد تثبيت الدولار |
بشكل افتراضي ، تم تصميم جميع الأطراف الخلفية المتوفرة على النظام الأساسي الحالي. لتعطيل الانحناء الخلفي المحدد ، استخدم الخيارات التالية: DILIGENT_NO_DIRECT3D11
، DILIGENT_NO_DIRECT3D12
، DILIGENT_NO_OPENGL
، DILIGENT_NO_VULKAN
، DILIGENT_NO_METAL
، DILIGENT_NO_WEBGPU
. يتم تمكين الواجهة الخلفية WebGPU افتراضيًا عند إنشاء الويب. لتمكينها على منصات أخرى ، استخدم DILIGENT_NO_WEBGPU=OFF
. يمكن ضبط الخيارات من خلال CMake UI أو من سطر الأوامر كما في المثال أدناه:
cmake -D DILIGENT_NO_DIRECT3D11=TRUE -S . -B ./build/Win64 -G "Visual Studio 17 2022" -A x64
بالإضافة إلى ذلك ، يمكن تمكين مكونات المحرك الفردية أو تعطيلها باستخدام الخيارات التالية: DILIGENT_BUILD_TOOLS
، DILIGENT_BUILD_FX
، DILIGENT_BUILD_SAMPLES
. إذا كنت ترغب فقط في إنشاء مشروع SampleBase
، فيمكنك استخدام خيار DILIGENT_BUILD_SAMPLE_BASE_ONLY
.
بشكل افتراضي ، ترتبط الواجهة الخلفية Vulkan بـ Glslang والتي تتيح تجميع تظليل HLSL و GLSL إلى spirv في وقت التشغيل. إذا لم يكن تجميع وقت التشغيل مطلوبًا ، فيمكن تعطيل GLSLang مع خيار DILIGENT_NO_GLSLANG
CMAKE. بالإضافة إلى ذلك ، يمكن تعطيل دعم HLSL في الخلفية غير المائية 3 مع خيار DILIGENT_NO_HLSL
. إن تمكين الخيارات يقلل بشكل كبير من حجم الثنائيات الخلفية للفيلمان و OpenGL ، والتي قد تكون مهمة بشكل خاص لتطبيقات الهاتف المحمول.
يستخدم المحرك الدؤوب تنسيق Clang لضمان تنسيق ثابت في قاعدة الكود. يمكن تعطيل التحقق من الصحة باستخدام خيار cmake DILIGENT_NO_FORMAT_VALIDATION
. لاحظ أن أي طلب سحب سيفشل إذا تم العثور على مشكلات التنسيق.
يستخدم المحرك المجتهد التحقق المكثف الذي يتم تمكينه دائمًا في بناء التصحيح. قد يتم تمكين بعض الاختبارات في تكوينات الإصدار عن طريق ضبط خيار DILIGENT_DEVELOPMENT
Cmake.
لتمكين دعم أحداث PIX ، قم بتعيين DILIGENT_LOAD_PIX_EVENT_RUNTIME
CMAKE.
لتمكين بعض الميزات المتقدمة على NVIDIA وحدات معالجة الرسومات (مثل الدعم غير المباشر متعدد السحب في DIRER3D11) ، قم بتنزيل NVAPI وضبط متغير DILIGENT_NVAPI_PATH
CMAKE.
يستخدم المحرك المجيد مكتبات متعددة من الطرف الثالث. إذا قام ملف CMake للتطبيق بتحديد أي من تلك المكتبات ، فسيستخدم Deligent الأهداف الحالية. سيحتاج التطبيق إلى التأكد من أن إعدادات الإنشاء متوافقة مع المجتهد.
يتيح المحرك المجتهد للعملاء تخصيص إعدادات البناء من خلال توفير ملف البرنامج النصي للتكوين الذي يحدد وظائف CMake الاختيارية التالية:
custom_configure_build()
- يحدد خصائص البناء العالمية مثل تكوينات الإنشاء ، علامات ترجمة C/C ++ ، أعلام الارتباط إلخ.custom_pre_configure_target()
- يحدد الإعدادات المخصصة لكل هدف في الإنشاء ويتم استدعاؤه قبل أن يبدأ نظام بناء المحرك في تكوين الهدف.custom_post_configure_target()
- تم استدعاؤه بعد أن قام نظام بناء المحرك بتكوين الهدف للسماح للعميل بتجاوز خصائص المحرك. يجب توفير المسار إلى البرنامج النصي للتكوين من خلال متغير BUILD_CONFIGURATION_FILE
عند تشغيل cmake ويجب أن يكون نسبة إلى مجلد Cmake Root ، على سبيل المثال:
cmake -D BUILD_CONFIGURATION_FILE=BuildConfig.cmake -S . -B ./build/Win64 -G "Visual Studio 17 2022" -A x64
إذا تم تعريفه ، يتم استدعاء وظيفة custom_configure_build()
قبل إضافة أي هدف بناء. بشكل افتراضي ، يحدد Cmake التكوينات الأربعة التالية: Debug ، Relwithdebinfo ، Minsizerel. إذا كنت تريد ، يمكنك تحديد تكوينات الإنشاء الخاصة بك عن طريق تعيين متغير CMAKE_CONFIGURATION_TYPES
. على سبيل المثال ، إذا كنت تريد أن يكون لديك تكوين اثنين فقط: Debug و ReleAsemt ، أضف السطر التالي إلى وظيفة custom_configure_build()
:
set (CMAKE_CONFIGURATION_TYPES Debug ReleaseMT CACHE STRING "Configuration types: Debug, ReleaseMT" FORCE )
يحتاج نظام البناء إلى معرفة قائمة التصحيح والإصدار (المحسّن) ، لذلك يجب أيضًا تعيين المتغيرين التاليين عند تعريف متغير CMAKE_CONFIGURATION_TYPES
:
set (DEBUG_CONFIGURATIONS DEBUG CACHE INTERNAL "" FORCE )
set (RELEASE_CONFIGURATIONS RELEASEMT CACHE INTERNAL "" FORCE )
لاحظ أنه بسبب تفاصيل CMAKE ، يجب أن تكون أسماء التكوين المدرجة في DEBUG_CONFIGURATIONS
و RELEASE_CONFIGURATIONS
.
إذا قمت بتحديد أي تكوين بخلاف أربعة من Cmake Standard ، فأنت بحاجة أيضًا إلى تعيين المتغيرات التالية ، لكل تكوين جديد:
CMAKE_C_FLAGS_<Config>
- C علامات ترجمةCMAKE_CXX_FLAGS_<Config>
- C ++ علامات ترجمةCMAKE_EXE_LINKER_FLAGS_<Config>
- أعلام الارتباطات القابلة للتنفيذCMAKE_SHARED_LINKER_FLAGS_<Config>
- أعلام ارتباط المكتبة المشتركةعلى سبيل المثال:
set (CMAKE_C_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE )
set (CMAKE_CXX_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE )
set (CMAKE_EXE_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE )
set (CMAKE_SHARED_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE )
فيما يلي مثال على وظيفة custom_configure_build ():
function (custom_configure_build)
if (CMAKE_CONFIGURATION_TYPES)
# Debug configurations
set (DEBUG_CONFIGURATIONS DEBUG CACHE INTERNAL "" FORCE )
# Release (optimized) configurations
set (RELEASE_CONFIGURATIONS RELEASEMT CACHE INTERNAL "" FORCE )
# CMAKE_CONFIGURATION_TYPES variable defines build configurations generated by cmake
set (CMAKE_CONFIGURATION_TYPES Debug ReleaseMT CACHE STRING "Configuration types: Debug, ReleaseMT" FORCE )
set (CMAKE_CXX_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE )
set (CMAKE_C_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE )
set (CMAKE_EXE_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE )
set (CMAKE_SHARED_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE )
endif ()
endfunction ()
إذا تم تعريفه ، تم استدعاء custom_pre_configure_target()
لكل هدف تم إنشاؤه بواسطة نظام الإنشاء ويسمح بتكوين خصائص خاصة بالهدف.
بشكل افتراضي ، يقوم نظام الإنشاء بتعيين بعض الخصائص المستهدفة. إذا قام custom_pre_configure_target()
بتعيين جميع الخصائص المطلوبة ، فيمكن أن يخبر نظام الإنشاء أنه لا يلزم إجراء معالجة أخرى عن طريق تعيين TARGET_CONFIGURATION_COMPLETE
متغير نطاق الوالدين إلى TRUE
:
set (TARGET_CONFIGURATION_COMPLETE TRUE PARENT_SCOPE )
فيما يلي مثال على وظيفة custom_pre_configure_target()
:
function (custom_pre_configure_target TARGET )
set_target_properties ( ${TARGET} PROPERTIES
STATIC_LIBRARY_FLAGS_RELEASEMT /LTCG
)
set (TARGET_CONFIGURATION_COMPLETE TRUE PARENT_SCOPE )
endfunction ()
إذا كان العميل يحتاج فقط إلى تجاوز بعض الإعدادات ، فقد يحدد وظيفة custom_post_configure_target()
التي يتم استدعاؤها بعد إكمال المحرك تكوين الهدف ، على سبيل المثال:
function (custom_post_configure_target TARGET )
set_target_properties ( ${TARGET} PROPERTIES
CXX_STANDARD 17
)
endfunction ()
يرجى الرجوع إلى هذه الصفحة. أيضا ، تعتبر البرامج التعليمية والعينات المذكورة أدناه مكانًا جيدًا للبدء.
تدوين حالة العرض الدؤوب هي لغة قائمة على JSON تصف التظليل وحالات خطوط الأنابيب وتوقيعات الموارد وغيرها من الأشياء في شكل مناسب ، على سبيل المثال:
{
"Shaders" : [
{
"Desc" : {
"Name" : " My Vertex shader " ,
"ShaderType" : " VERTEX "
},
"SourceLanguage" : " HLSL " ,
"FilePath" : " cube.vsh "
},
{
"Desc" : {
"Name" : " My Pixel shader " ,
"ShaderType" : " PIXEL "
},
"SourceLanguage" : " HLSL " ,
"FilePath" : " cube.psh " ,
}
],
"Pipeleines" : [
{
"GraphicsPipeline" : {
"DepthStencilDesc" : {
"DepthEnable" : true
},
"RTVFormats" : {
"0" : " RGBA8_UNORM_SRGB "
},
"RasterizerDesc" : {
"CullMode" : " FRONT "
},
"BlendDesc" : {
"RenderTargets" : {
"0" : {
"BlendEnable" : true
}
}
}
},
"PSODesc" : {
"Name" : " My Pipeline State " ,
"PipelineType" : " GRAPHICS "
},
"pVS" : " My Vertex shader " ,
"pPS" : " My Pixel shader "
}
]
}
يمكن تحليل ملفات JSON ديناميكيًا في وقت التشغيل. بدلاً من ذلك ، يمكن للتطبيق استخدام أداة Packager للمعالجة المسبقة لخطوط الأنابيب (تظليل التظليل للمنصات المستهدفة ، وتحديد تخطيطات الموارد الداخلية ، وما إلى ذلك) في أرشيف ثنائي تم تحسينه لأداء تحميل وقت التشغيل.
درس تعليمي | لقطة شاشة | وصف |
---|---|---|
01 - مرحبا مثلث | ![]() | يوضح هذا البرنامج التعليمي كيفية تقديم مثلث بسيط باستخدام واجهة برمجة تطبيقات المحرك الدؤوب. |
02 - مكعب | ![]() | يوضح هذا البرنامج التعليمي كيفية تقديم كائن ثلاثي الأبعاد فعلي ، مكعب. يوضح كيفية تحميل التظليل من الملفات ، وإنشاء واستخدام قمة الرأس ، الفهرس والمؤسسات الموحدة. |
03 - نسيج | ![]() | يوضح هذا البرنامج التعليمي كيفية تطبيق نسيج على كائن ثلاثي الأبعاد. يوضح كيفية تحميل نسيج من الملف ، وإنشاء كائن ربط مورد Shader وكيفية أخذ عينات من نسيج في التظليل. |
03 - comple -c | ![]() | يتطابق هذا البرنامج التعليمي مع البرنامج التعليمي 03 ، ولكن يتم تنفيذه باستخدام C API. |
03 - التنسيق dotnet | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام واجهة برمجة تطبيقات المحرك الدؤوب في تطبيقات .NET. |
04 - Instancing | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام Instancing لتقديم نسخ متعددة من كائن واحد باستخدام مصفوفة تحويل فريدة لكل نسخة. |
05 - صفيف الملمس | ![]() | يوضح هذا البرنامج التعليمي كيفية الجمع بين المصفوفات الملمس لاستخدام نسيج فريد لكل حالة. |
06 - Multithreading | ![]() | يوضح هذا البرنامج التعليمي كيفية إنشاء قوائم الأوامر بالتوازي من مؤشرات الترابط المتعددة. |
07 - تظليل الهندسة | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام Shader Geometry لتقديم إطار سلكي ناعم. |
08 - الفسيفساء | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام Testellation للأجهزة لتنفيذ خوارزمية عرض التضاريس التكيفية البسيطة. |
09 - كواد | ![]() | يوضح هذا البرنامج التعليمي كيفية تقديم كواد ثنائية الأبعاد متعددة ، وتبديل القوام بشكل متكرر ومواعيد المزج. |
10 - تدفق البيانات | ![]() | يعرض هذا البرنامج التعليمي استراتيجية رسم الخرائط العازلة الديناميكية باستخدام أعلام MAP_FLAG_DISCARD و MAP_FLAG_DO_NOT_SYNCHRONIZE لدفق كميات متفاوتة من البيانات بكفاءة إلى GPU. |
11 - تحديثات الموارد | ![]() | يوضح هذا البرنامج التعليمي طرقًا مختلفة لتحديث المخازن المؤقتة والقوام في المحرك الدؤوب ويشرح التفاصيل الداخلية المهمة والآثار المترتبة على الأداء المتعلقة بكل طريقة. |
12 - عرض الهدف | ![]() | يوضح هذا البرنامج التعليمي كيفية تقديم مكعب ثلاثي الأبعاد في هدف عرض خارج الشاشة ويقوم بتأثير بسيط بعد المعالجة. |
13 - خريطة الظل | ![]() | يوضح هذا البرنامج التعليمي كيفية تقديم الظلال الأساسية باستخدام خريطة الظل. |
14 - حساب تظليل | ![]() | يوضح هذا البرنامج التعليمي كيفية تنفيذ نظام محاكاة جسيمات بسيط باستخدام تظليلات حساب. |
15 - نوافذ متعددة | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام المحرك الدؤوب لتقديمه إلى نوافذ متعددة. |
16 - موارد لا ترد | ![]() | يوضح هذا البرنامج التعليمي كيفية تنفيذ الموارد غير المرتبطة ، وهي تقنية تعزز ميزة فهرسة موارد التظليل الديناميكية التي تمكّنها واجهات برمجة التطبيقات من الجيل التالي لتحسين أداء العرض بشكل كبير. |
17 - MSAA | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام مكافحة التعيينات المتعددة (MSAA) لجعل الحواف الهندسية تبدو أكثر سلاسة وأكثر استقرارًا مؤقتًا. |
18 - استفسارات | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام الاستعلامات لاسترداد معلومات مختلفة حول عملية GPU ، مثل عدد البدائل المقدمة ، ومدة معالجة الأوامر ، وما إلى ذلك. |
19 - تقديم تمريرات | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام واجهة برمجة تطبيقات Render Passes لتنفيذ التظليل المؤجل البسيط. |
20 - شبكة تظليل | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام التضخيم وتظليل الشبكات ، والمراحل الجديدة القابلة للبرمجة ، لتنفيذ عرض Frustum culling وحساب Object LOD على وحدة معالجة الرسومات. |
21 - تتبع الشعاع | ![]() | يوضح هذا البرنامج التعليمي أساسيات استخدام واجهة برمجة تطبيقات تتبع الأشعة في المحرك المجتهد. |
22 - عرض هجين | ![]() | يوضح هذا البرنامج التعليمي كيفية تنفيذ عارض هجين بسيط يجمع بين النقطية وتتبع الشعاع. |
23 - قوائم انتظار القيادة | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام قوائم قوائم الأوامر المتعددة لأداء العرض بالتوازي مع عمليات النسخ والحساب. |
24 - تظليل معدل متغير | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام تظليل معدل متغير لتقليل حمل تظليل البكسل. |
25 - عرض حزمة الدولة | ![]() | يوضح هذا البرنامج التعليمي كيفية إنشاء وأرشفة خطوط أنابيب مع أداة Off-Line State على مثال تتبع المسار البسيط. |
26 - تقديم ذاكرة التخزين المؤقت للدولة | ![]() | يقوم هذا البرنامج التعليمي بتوسيع تقنية تتبع المسار التي تم تنفيذها في البرنامج التعليمي السابق ويوضح كيفية استخدام ذاكرة التخزين المؤقت لحالة العرض لحفظ حالات خطوط الأنابيب التي تم إنشاؤها في وقت التشغيل وتحميلها عند بدء التطبيق. |
27 - ما بعد المعالجة | ![]() | يوضح هذا البرنامج التعليمي كيفية استخدام تأثيرات ما بعد المعالجة من وحدة DidigentFx. |
عينة | لقطة شاشة | وصف |
---|---|---|
عينة الجو | ![]() | توضح هذه العينة كيفية دمج تأثير ما بعد المعالجة في تطبيق ما بعد المعالجة في تطبيق لتقديم جو جسديًا. |
GLFW DEMO | ![]() | توضح لعبة Maze Mini Game كيفية استخدام GLFW لإنشاء نافذة ومعالجة لوحة المفاتيح وإدخال الماوس. |
عارض GLTF | ![]() | توضح هذه العينة كيفية استخدام محمل الأصول وعارض PBR لتحميل نماذج GLTF وتقديمها. |
عارض الدولار | ![]() | توضح هذه العينة كيفية تقديم ملفات الدولارات الأمريكية باستخدام Hydrogent ، وهو تطبيق واجهة برمجة تطبيقات عرض Hydra في المحرك الدؤوب. |
الظلال | ![]() | توضح هذه العينة كيفية استخدام مكون التظليل لتقديم ظلال عالية الجودة. |
عزيزي Imgui Demo | ![]() | توضح هذه العينة دمج المحرك مع مكتبة Imgui UI العزيزة. |
العرض التوضيحي nuklear | ![]() | توضح هذه العينة دمج المحرك مع مكتبة واجهة المستخدم nuklear. |
مرحبا ar | ![]() | توضح هذه العينة كيفية استخدام المحرك الدؤوب في تطبيق Android AR الأساسي. |
الكويكبات | ![]() | هذا Sampple هو معيار أداء يجعل 50000 كويكبات فريدة من نوعها ويسمح بمقارنة أداء أوضاع التقديم المختلفة. |
تجريبي تكامل الوحدة | ![]() | يوضح هذا المشروع دمج المحرك الدؤوب مع الوحدة. |
يتم تنفيذ وظائف التقديم عالية المستوى بواسطة وحدة DidigentFx. المكونات التالية متاحة الآن:
![]() | ![]() |
![]() | ![]() |
مكافحة الإنقاذ الزمنية
نغمة رسم الخرائط أدوات التظليل
سنقدر ذلك إذا كان بإمكانك إرسال رابط لنا في حالة استخدام منتجك للمحرك المجتهد.
نظام تصور التضاريس على نطاق واسع لمحاكاة التدريب التجريبي من قبل Elbit Systems
Lumenrt: برنامج تصور ونمذجة الواقع بواسطة Bentley Systems
جودوس: لعبة رمل حائزة على جوائز من 22CANS
Vrmac Graphics: A cross-platform graphics library for .NET
Diligent Engine is an open project that may be freely used by everyone. We started it to empower the community and help people achieve their goals. Sadly enough, not everyone's goals are worthy. Please don't associate us with suspicious projects you may find on the Web that appear to be using Diligent Engine. We neither can possibly track all such uses nor can we really do anything about them because our permissive license does not give us a lot of leverage.
See Apache 2.0 license.
Each module has some third-party dependencies, each of which may have independent licensing:
To contribute your code, submit a Pull Request to this repository. Diligent Engine is licensed under the Apache 2.0 license that guarantees that content in the DiligentEngine repository is free of Intellectual Property encumbrances. In submitting any content to this repository, you license that content under the same terms, and you agree that the content is free of any Intellectual Property claims and you have the right to license it under those terms.
Diligent Engine uses clang-format to ensure consistent source code style throughout the code base. The format is validated by CI for each commit and pull request, and the build will fail if any code formatting issue is found. Please refer to this page for instructions on how to set up clang-format and automatic code formatting.
Coding Guidelines
Performance Best Practices
Code Formatting
See Release History
diligentgraphics.com