Godot: يجب التحقق من إمكانيات GPU والخروج بأمان

تم إنشاؤها على ١٠ يناير ٢٠١٥  ·  87تعليقات  ·  مصدر: godotengine/godot

أعتقد أن على Godot أن يتحقق بطريقة ما مما إذا كان النظام يمكنه التعامل مع GLES2 أم لا ، وبدلاً من الإجهاض أو الفشل ، قم بتقديم رسالة خطأ ذات مغزى للمستخدم بشأن برامج التشغيل الخاصة بهم التي لا تدعم GLES2. "يبدو أن جهاز الكمبيوتر الخاص بك لا يدعم حاليًا GLES2 ، وهو مطلوب لتشغيل هذا البرنامج. يلزم وجود برامج تشغيل جديدة أو ترقية الأجهزة." شيء من هذا القبيل.

لست متأكدًا مما سيتطلبه هذا الأمر ، ولكن يجب أن تكون هناك طريقة ما للقيام بذلك في الكود.

هذا مخصص خصيصًا لمستخدمي Windows الذين يبدو أن لديهم دائمًا وحدات معالجة رسومات سيئة ومحركات تشغيل سيئة ، ولكن من الناحية المثالية ، ستكون عمليات التحقق على جميع الأنظمة الأساسية.

bug enhancement core rendering

التعليق الأكثر فائدة

لقد أجريت للتو اختبارًا على نتبووك القديم الخاص بي باستخدام Intel crappy intel igp غير المتوافق ، تحت Windows.

في السطر 10791 من rasterizer_gles2.cpp ، إلى RasterizerGLES2::init() أضفت هذه الأسطر القليلة:

    if (!glewIsSupported("GL_VERSION_2_1")) {
        print_line(String("Your graphics card is crappy. It does not support Opengl 2.1. Now Godot is going to crash."));
    }

لا يزال Godot يتعطل ، لكنه يعرض رسالة الخطأ هذه في وحدة التحكم قبل الإغماء مباشرة.

لا أعرف كيف أخبر Godot بإلغاء التهيئة النقطية (لا يُرجع RasterizerGLES2 :: init () صح / خطأ ، يبدو الأمر كما لو لم يكن لديه خيار سوى النجاح أو التعطل) ، ولا أعرف كيف أخبر Godot بالإقلاع بصورة صحيحة.

حتى لو لم يكن اختبار التوافق هذا موثوقًا بنسبة 100٪ ، فقد يقلل على الأقل من عدد الأعطال الصامتة ، ويعرض مربع حوار نظام صغير يحذر المستخدم من أنه سيتعطل ولماذا.

ال 87 كومينتر

+1

+10

+1

لقد كتبت هذا الرمز في Context_gl_win.cpp ولكنه يتعطل عمومًا بسبب
بعض الوظائف غير المنفذة في النوافذ بسبب السائق الغبي
أتمنى أن أتمكن من معرفة السبب بالضبط

يوم السبت ، 17 يناير 2015 الساعة 2:56 مساءً ، كتب MSC [email protected] :

+1

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/okamstudio/godot/issues/1162#issuecomment -70376758.

وضع هذا كأولوية عالية في الوقت الحالي لأنه سيكون ميزة مفيدة للغاية. نتلقى الكثير من تقارير الأعطال بسبب وجود أشخاص لديهم Intel IGPs قديمة جدًا أو غير ذلك لا يدعم GLES2.

حسنًا ، أعتقد أنني أشرت إلى عدد كافٍ من الأعطال للتأكيد على "الأطنان" أعلاه ، وسأتوقف عن البحث في الأرشيف: D

+1 لماذا يعمل Godot بطريقة سحرية على Ubuntu وليس على Windows؟

أي فكرة عن كيفية تنفيذ هذاreduz؟

لقد كتبت هذا الرمز في Context_gl_win.cpp ولكنه يتعطل عمومًا بسبب بعض الوظائف غير المنفذة في windows

لماذا لا تستخدم الارتباط الديناميكي إذن؟ سيكون من الواضح أي وظيفة مفقودة. أعتقد أن https://github.com/p3/regal يقوم بهذا.

لقد قمت بالفعل بالكشف وحاولت إظهار رسالة ، ولكن يبدو أن الأمر كذلك
لا يزال لا يعمل.
نظرًا لأنه ليس لدي أي أجهزة غير مدعومة ، لا يمكنني معرفة سبب تعطلها و
وبالتالي ، لا يمكن إصلاحه.
ترحيب PRs.

يوم الثلاثاء ، 2 فبراير 2016 الساعة 12:11 مساءً ، anatoly techtonik < [email protected]

كتب:

لقد كتبت هذا الرمز في Context_gl_win.cpp ولكنه يتعطل عمومًا بسبب
بعض الوظائف غير المنفذة في النوافذ

لماذا لا تستخدم الارتباط الديناميكي إذن؟ سيكون من الواضح ما هي الوظيفة
مفقود. أعتقد أن https://github.com/p3/regal يقوم بهذا.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -178624438.

إذا كان بإمكان شخص ما لديه وحدة معالجة رسومات قديمة محاولة تشغيل Godot عبر gdb على Linux ، فقد يكون ذلك مفيدًا جدًا. يبدو أن معلومات تصحيح أخطاء "توقيع المشكلة" في Windows لا طائل من ورائها: /

أنا لا أفعل C ++ على الإطلاق. فقط بايثون ، أنا مستخدم. أخبرني ماذا أجري وقد أحصل على المعلومات.

أخبرني ماذا أجري وقد أحصل على المعلومات.

ليس لدي أدنى فكرة عن كيفية تشغيل الأشياء من خلال مصحح أخطاء على Windows ، لكنني أعتقد أنه ليس بالأمر السهل بالنسبة للأشخاص الذين ليس لديهم خبرة كبيرة في تجميع الأشياء على Windows. لهذا السبب اقترحت على شخص ما محاولة التصحيح باستخدام GDB على Linux ، حيث إنه سهل الاستخدام للغاية:

$ gdb /path/to/godot/binary // if possible self-compiled in debug mode, to have more info
-> run
// see that it segfaults in the terminal
-> bt

وانسخ إخراج هذا الأمر bt (backtrace) إلى تقرير الخطأ هذا.

بالطبع قد تكون المشكلة خاصة بـ Windows ، لذا فإن تصحيح الأخطاء على Linux سيكون بلا فائدة ، لكنني أعتقد أن مستخدمي Linux لديهم أيضًا segfaults لم يتم اكتشافها لإخبار المستخدم أن أجهزتهم لا تدعم OpenGL (ES) 2.1.

فشل Beta 2.0 في العمل على نظام Linux الخاص بي ، ولكن يبدو أنه لا علاقة له ببطاقة الرسومات - # 3557

هههه أنت محظوظ لأنك واجهت جميع المشكلات المعروفة لدينا في حالات الزاوية :)

أعتقد أن لدي "موهبة شاكية" وحساب على GitHub. =)

لا أعرف شيئًا عن بطاقات الفيديو القديمة التي تتعطل عند بدء التشغيل ، ولكن على سبيل المثال ، في NVIDIA 6800 GT ،
تعطل فقط في عدد قليل من المشاريع. لذلك يوجد ناتج cmd حول أخطاء الإطارات الاحتياطية في جميع المشروعات ووحدات Godot النمطية. يمكن إصلاحه بالكامل عن طريق تعطيل إعداد "fp16_framebuffer" في إعدادات أداة تحويل المشروع. أعلم أنه في بطاقات الفيديو نفسها (لا أعرف عن الاتصال الكامل) ، هناك تنقيط خاطئ (لا توجد مواد) ما يمكن إصلاحه بالكامل عن طريق تعطيل إعداد "fragment_lighting".
لذلك أعتقد أن Godot يجب أن يتحقق مما إذا كانت هذه الوظائف مدعومة ، وإذا لم يكن الأمر كذلك ، لاحظ المستخدم وقم بتعطيلها.
ربما سيساعد في التعطل عند بدء التشغيل أيضًا.

أخبرني ماذا أجري وقد أحصل على المعلومات.

$ gdb / path / to / godot / binary // إذا أمكن تجميعها ذاتيًا في وضع التصحيح ، للحصول على مزيد من المعلومات

Godot_v2.0_beta_20160205_x11.64 لا يتعطل في Fedora 23 بنفس الجهاز. تم الكشف عن أنه Mobile Intel® GM45 Express Chipset هناك.

لا يزال يتعطل Godot_v2.0_beta_20160205_win32.exe على نظام التشغيل Vista 32.

techtonik أعتقد أن السبب هو أن Linux ، على عكس Windows ، يستخدم إدراك البرمجيات لـ OpenGL عندما تكون هناك مشاكل مع OpenGL ، لكنه أبطأ من الأجهزة ، بالطبع.

@ Algrin6 سيكون من الرائع أن يوفر المحرك بعض الشفافية في هذه الحقيقة. في العصور القديمة ، تم شحن ألعاب مثل Baldur's Gate مع ثنائيات اختبار الرسومات. http://www.fileplanet.com/13582/download/Baldur 's-Gate-Graphics-Test

BIOWARE VIDEO DRIVER TEST

PURPOSE
-------
This program tests each of the DirectDraw calls used in the full version of Baldur's
Gate.  The program uses 640x480 mode with 16-bit color, which has proved to be 
problematic with some video drivers.

REQUIREMENTS
------------
This program requires a video card with 2 MB of memory.  This program also expects
to see DirectX 3.01a or greater on your system.
...

2 ميغا بايت من الذاكرة! والآن لدي 3 غيغابايت + 3 غيغاهرتز ولا يمكنني تشغيل محرك اللعبة. كيف ذلك؟

2 ميغا بايت من الذاكرة! والآن لدي 3 غيغابايت + 3 غيغاهرتز ولا يمكنني تشغيل محرك اللعبة. كيف ذلك؟

لأننا في عام 2016 وأن محرك Bioware قديم جدًا؟ وقد تم تصميم هذا الاختبار للتحقق مما إذا كان برنامج تشغيل الرسومات قويًا بدرجة كافية ، لذلك من المحتمل أن الاختبار كان _ يعمل _ بدءًا من DirectX 3.01a ، ولكن ربما يقول "ترقية أجهزتك أو برامج التشغيل" إذا كنت تحت DirectX 7 أو شيء من هذا القبيل. وكان محرك Bioware يعمل فقط على MS Windows <= XP ، بينما يعمل Godot على عشرات المنصات ...

الآن بما أنك تعرف بالضبط ما يتعين علينا القيام به ، يرجى تقديم طلب سحب.

techtonik المشكلة الرئيسية حول هذا الأمر هي أنه لا يوجد لدى المطورين الأساسيين أجهزة قديمة لاختبار المشكلة. لذلك عليك إما تقديم معلومات تصحيح الأخطاء لتحديد سبب المشكلة أو إصلاحها بنفسك (وهو جمال المصدر المفتوح).

بوابة بلدور غير مبرمجة في محرك ألعاب ثنائي / ثلاثي الأبعاد للأغراض العامة.
إنه مصمم خصيصًا ومبرمجًا في C ، مجمع x86 ، على الأرجح Watcom
المترجم ، الوضع المحمي ويستخدم آلة مكدس أساسية للبرمجة النصية. أيضا
لا تتردد في القيام بكل التعليمات البرمجية الخاصة بالتبجح بنفسك.

يوم الأحد ، 7 فبراير 2016 الساعة 12:36 مساءً ، جورج ماركيز [email protected]
كتب:

techtonik https://github.com/techtonik مشكلة كبيرة حول هذا هو
أنه لا يوجد لدى المطورين الأساسيين أجهزة قديمة لاختبار المشكلة. وبالتالي
عليك إما تقديم معلومات تصحيح الأخطاء لتحديد سبب المشكلة أو
أصلحه بنفسك (وهو جمال المصدر المفتوح).

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -181034018.

reduz هل يستطيع

إذا كان هذا مستحيلًا في الوقت الحالي ، فهل هذا ممكن تقنيًا على الأقل؟

تتمثل حالة استخدام التحقق من الصحة في القدرة على إنتاج لعبة (اختبار) بسيطة يمكن تشغيلها على أي جهاز تنفيس وقياس الأداء.

@ Algrin6 من غير المجدي التحقق مما إذا كانت هذه الأشياء مدعومة في الإصدارات القديمة من OpenGL. تحتوي وحدات معالجة الرسومات هذه على برامج تشغيل تخبر OpenGL أن كل شيء مدعوم ، ثم انتقل إلى نوع من البرامج الاحتياطية الغريبة التي تكون بطيئة أو تتجمد أو تتعطل.

أفضل التظاهر بأن مثل هذه الأجهزة القديمة غير موجودة وقد سقطت من الكوكب.

أعتقد أن هذا يعني "البقع مرحب بها" أشك حقًا في أن أي شخص سيرفض
دعم متقن ل
منصة أقدم.

يوم الخميس ، 11 فبراير 2016 ، الساعة 3:41 صباحًا ، خوان لينيتسكي إخطارات @github.com
كتب:

@ Algrin6 https://github.com/Algrin6 لا جدوى من التحقق مما إذا كان ذلك
الأشياء مدعومة في الإصدارات القديمة من OpenGL. تحتوي وحدات معالجة الرسومات هذه على برامج تشغيل
تخبر OpenGL أن كل شيء مدعوم ، ثم انتقل إلى نوع ما
احتياطي غريب للبرامج يكون بطيئًا أو يتجمد أو يتعطل.

أفضل التظاهر بأن مثل هذه الأجهزة القديمة غير موجودة وقد سقطت
من الكوكب.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182658216.

ما زلت أنتظر شخصًا ما لديه مجموعة شرائح قديمة ليساهم بشكل أفضل
الكشف عن الأجهزة غير المدعومة. ليس لدي أي من تلك الأجهزة منذ ذلك الحين
عقد من الزمان ، لذلك لا يمكنني فعل الكثير.

يوم الأربعاء ، 10 شباط (فبراير) 2016 ، الساعة 11:30 مساءً ، Sergey Lapin [email protected]
كتب:

أعتقد أن هذا يعني "البقع مرحب بها" أشك حقًا في أن أي شخص سيرفض
دعم متقن ل
منصة أقدم.

يوم الخميس ، 11 فبراير 2016 ، الساعة 3:41 صباحًا ، خوان لينيتسكي إخطارات @github.com
كتب:

@ Algrin6 https://github.com/Algrin6 لا جدوى من التحقق مما إذا كان ذلك
الأشياء مدعومة في الإصدارات القديمة من OpenGL. تحتوي وحدات معالجة الرسومات هذه على برامج تشغيل
تخبر OpenGL أن كل شيء مدعوم ، ثم انتقل إلى نوع ما
احتياطي غريب للبرامج يكون بطيئًا أو يتجمد أو يتعطل.

أفضل التظاهر بأن مثل هذه الأجهزة القديمة غير موجودة وقد سقطت
من الكوكب.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -182658216
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182676389.

لدي إمكانية الوصول إلى التخزين مع أجهزة الكمبيوتر من الثمانينيات إلى أوائل عام 2000 ، إذا كان ذلك سيساعد ،
لكني أحتاج إلى بعض التفاصيل المتعلقة بكيفية الاختبار وتصحيح الأخطاء لأنني لست كذلك
مطور windows بأي شكل من الأشكال وليس لديه أفكار حول الأدوات ، إلخ.
لديك مجموعة من i740s مع صناديق win95se2 ، حتى بعض Pentim233MMX.
بسبب المحاسبة لن يتم التخلص من هذا حتى عام 2025.

راجع للشغل ، خوان هل يمكنك الاتصال بي عبر البريد الإلكتروني حتى يكون لدي عنوانك الشخصي؟
لن تقصفها بأي شيء غبي.

يوم الخميس ، 11 فبراير 2016 ، الساعة 5:48 صباحًا ، خوان لينيتسكي إخطارات @github.com
كتب:

ما زلت أنتظر شخصًا ما لديه مجموعة شرائح قديمة ليساهم بشكل أفضل
الكشف عن الأجهزة غير المدعومة. ليس لدي أي من تلك الأجهزة منذ ذلك الحين
عقد من الزمان ، لذلك لا يمكنني فعل الكثير.

يوم الأربعاء ، 10 شباط (فبراير) 2016 ، الساعة 11:30 مساءً ، Sergey Lapin [email protected]
كتب:

أعتقد أن هذا يعني "البقع مرحب بها" أشك حقًا في أن أي شخص سيفعل ذلك
رفض
دعم متقن ل
منصة أقدم.

يوم الخميس ، 11 فبراير 2016 الساعة 3:41 صباحًا ، خوان لينيتسكي <
[email protected]>
كتب:

@ Algrin6 https://github.com/Algrin6 لا جدوى من التحقق مما إذا كان ذلك
الأشياء مدعومة في الإصدارات القديمة من OpenGL. تحتوي وحدات معالجة الرسومات هذه على برامج تشغيل
تخبر OpenGL أن كل شيء مدعوم ، ثم انتقل إلى نوع ما
من
احتياطي غريب للبرامج يكون بطيئًا أو يتجمد أو يتعطل.

أفضل التظاهر بأن مثل هذه الأجهزة القديمة غير موجودة ولديها
سقط
من الكوكب.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
<
https://github.com/godotengine/godot/issues/1162#issuecomment -182658216
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -182676389
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182678470.

لا تحتاج إلى العودة إلى هذا الحد. فقط Intel Series 3/4 أو i940 هو
يكفي لجعله ينهار ...
فقط قم بالتجميع باستخدام mingw / msvc وحاول معرفة سبب تعطله بدلاً من ذلك
لإظهار MessageBox أن الأجهزة غير مدعومة

يوم الخميس ، 11 شباط (فبراير) 2016 الساعة 12:00 صباحًا ، سيرجي لابين [email protected]
كتب:

لدي إمكانية الوصول إلى التخزين مع أجهزة الكمبيوتر من الثمانينيات إلى أوائل عام 2000 ، إذا كان ذلك سيساعد ،
لكني أحتاج إلى بعض التفاصيل المتعلقة بكيفية الاختبار وتصحيح الأخطاء لأنني لست كذلك
مطور windows بأي شكل من الأشكال وليس لديه أفكار حول الأدوات ، إلخ.
لديك مجموعة من i740s مع صناديق win95se2 ، حتى بعض Pentim233MMX.
بسبب المحاسبة لن يتم التخلص من هذا حتى عام 2025.

راجع للشغل ، خوان هل يمكنك الاتصال بي عبر البريد الإلكتروني حتى يكون لدي عنوانك الشخصي؟
لن تقصفها بأي شيء غبي.

يوم الخميس ، 11 فبراير 2016 ، الساعة 5:48 صباحًا ، خوان لينيتسكي إخطارات @github.com

كتب:

ما زلت أنتظر شخصًا ما لديه مجموعة شرائح قديمة ليساهم بشكل أفضل
الكشف عن الأجهزة غير المدعومة. ليس لدي أي من تلك الأجهزة
منذ
عقد من الزمان ، لذلك لا يمكنني فعل الكثير.

يوم الأربعاء 10 شباط (فبراير) 2016 الساعة 11:30 مساءً ، سيرجي لابين < [email protected]

كتب:

أعتقد أن هذا يعني "البقع مرحب بها" أشك حقًا في أن أي شخص سيفعل ذلك
رفض
دعم متقن ل
منصة أقدم.

يوم الخميس ، 11 فبراير 2016 الساعة 3:41 صباحًا ، خوان لينيتسكي <
[email protected]>
كتب:

@ Algrin6 https://github.com/Algrin6 لا جدوى من التحقق مما إذا كان
ذلك
الأشياء مدعومة في الإصدارات القديمة من OpenGL. هذه وحدات معالجة الرسومات لها
السائقين
تخبر OpenGL أن كل شيء مدعوم ، ثم انتقل إلى نوع ما
من
احتياطي غريب للبرامج يكون بطيئًا أو يتجمد أو يتعطل.

أفضل التظاهر بأن مثل هذه الأجهزة القديمة غير موجودة ولديها
سقط
من الكوكب.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
<
https://github.com/godotengine/godot/issues/1162#issuecomment -182658216
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
<
https://github.com/godotengine/godot/issues/1162#issuecomment -182676389
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -182678470
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182679526.

تم تجميع godot.windows.tools.32.exe باستخدام MinGW. تحطم. ما العمل التالي؟

الشيء الوحيد الذي يمكنني التفكير فيه هو أنك بحاجة إلى تصحيح العطل. هوية شخصية
ابدأ بالوظيفة الرئيسية () واطبع اسم كل وظيفة
يتم تشغيله حتى يتم العثور على الشخص الذي يتعطل فيه ، ثم أضف الطباعة إليه فقط
كل سطر من الدالة للعثور على السطر الدقيق في مكانه
أعطال وإبلاغ النتائج. أيضا إذا تم تجميعها بواسطة mingw كما تحصل
عنوان تحطم يمكنك استخدامه
addr2line -e / path / to / debug / exe 0x

لمعرفة رقم السطر.
ستكون هذه المعلومات مفيدة للغاية ،
لكن هذا لا يعني أن التصحيح قد انتهى هنا ، لكن هذا سيكون كبيرًا
خطوة إلى الأمام.

يوم الخميس ، 11 شباط (فبراير) 2016 الساعة 11:46 مساءً ، أناتولي تيكتونيك <
[email protected]> كتب:

تم تجميع godot.windows.tools.32.exe باستخدام MinGW. تحطم. ما العمل التالي؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183054269.

في الواقع ، يبدو أن MinGW قد تم شحنه بـ gdb :

E:\r\godot\bin>gdb godot.windows.tools.32.exe
GNU gdb (GDB) 7.8.1
...
This GDB was configured as "i686-w64-mingw32".
...
Reading symbols from godot.windows.tools.32.exe...done.
(gdb) run
Starting program: E:\r\godot\bin\godot.windows.tools.32.exe
[New Thread 384.0xca0]
EXEC PATHP??: E:\r\godot\bin\godot.windows.tools.32.exe
EXEC PATHP??: E:\r\godot\bin\godot.windows.tools.32.exe
EXEC PATHP??: E:\r\godot\bin\godot.windows.tools.32.exe
DETECTED MONITORS: 1

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
#1  0x004baf5f in RasterizerGLES2::init (this=0xa144dd0) at drivers\gles2\rasterizer_gles2.cpp:10808
#2  0x00db4863 in VisualServerRaster::init (this=0xa1c6a20) at servers\visual\visual_server_raster.cpp:7550
#3  0x00db5cef in VisualServerWrapMT::init (this=0xb3c3e30) at servers\visual\visual_server_wrap_mt.cpp:156
#4  0x004041e6 in OS_Windows::initialize (this=0x22dd20, p_desired=..., p_video_driver=0, p_audio_driver=0) at platform\windows\os_windows.cpp:984
#5  0x004101c6 in Main::setup2 () at main\main.cpp:852
#6  0x0040f504 in Main::setup (execpath=0x8f143a8 "E:\\r\\godot\\bin\\godot.windows.tools.32.exe", argc=0, argv=0x8f1438c, p_second_phase=true)
    at main\main.cpp:796
#7  0x00401935 in widechar_main (argc=1, argv=0x273e58) at platform\windows\godot_win.cpp:138
#8  0x00401a53 in main (_argc=1, _argv=0x8f11c98) at platform\windows\godot_win.cpp:172
(gdb)

وفقًا للتتبع أعلاه ، فإنه يتعطل عند الخط:

...
    glGenTextures(1, &white_tex);
    unsigned char whitetexdata[8*8*3];
    for(int i=0;i<8*8*3;i++) {
        whitetexdata[i]=255;
    }
--> glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D,white_tex);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0, GL_RGB, GL_UNSIGNED_BYTE,whitetexdata);
    glGenerateMipmap(GL_TEXTURE_2D);
...

https://github.com/godotengine/godot/blame/f6a8a0f51358e42295cc5a049074a59466161ad8/drivers/gles2/rasterizer_gles2.cpp#L10808

إذا ما هو التالي؟

خرج apitrace

E:\r\godot\bin>apitrace.exe trace godot.windows.tools.32.exe
apitrace: loaded into E:\r\godot\bin\godot.windows.tools.32.exe
EXEC PATHP??: E:\r\godot\bin\godot.windows.tools.32.exe
EXEC PATHP??: E:\r\godot\bin\godot.windows.tools.32.exe
EXEC PATHP??: E:\r\godot\bin\godot.windows.tools.32.exe
DETECTED MONITORS: 1
apitrace: tracing to E:\r\godot\bin\godot.windows.tools.32.1.trace
apitrace: warning: caught exception 0xc0000005
apitrace: flushing trace due to an exception
E:\r\godot\bin>glretrace.exe godot.windows.tools.32.1.trace -v -d
2 <strong i="8">@0</strong> wglCreateContext(hdc = 0xcd01199a) = 0x10000
3 <strong i="9">@0</strong> wglMakeCurrent(hdc = 0xcd01199a, hglrc = 0x10000) = TRUE
warning: ChoosePixelFormat returned a pixel format supported by the GDI software implementation
4 <strong i="10">@0</strong> glViewport(x = 0, y = 0, width = 1024, height = 600)
4: warning: glGetError(glViewport) = GL_INVALID_ENUM
5 <strong i="11">@0</strong> glScissor(x = 0, y = 0, width = 1024, height = 600)
741 <strong i="12">@0</strong> glEnable(cap = GL_DEPTH_TEST)
742 <strong i="13">@0</strong> glDepthFunc(func = GL_LEQUAL)
743 <strong i="14">@0</strong> glFrontFace(mode = GL_CW)
744 <strong i="15">@0</strong> glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
745 <strong i="16">@0</strong> glClear(mask = GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)
746 <strong i="17">@0</strong> glGenTextures(n = 1, textures = &1)
Rendered 0 frames in 0.268717 secs, average of 0 fps

الوظيفة فارغة لأن السائق لا يوفرها ، ولهذا السبب
حوادث.

في 12 فبراير 2016 الساعة 01:21 ، anatoly techtonik [email protected]
كتب:

godot.windows.tools.32.1.trace.zip
https://github.com/godotengine/godot/files/127485/godot.windows.tools.32.1.trace.zip

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183174112.

@ punto- أين ترى أنه NULL؟

في الجزء العلوي من backtrace ، الإطار 0 ، العنوان إذا كان 0x00000 ، هذه هي الطريقة
يبدو عند استدعاء مؤشر دالة فارغ

في 12 فبراير 2016 في تمام الساعة 06:58 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

@ punto- https://github.com/punto- أين ترى أنه NULL؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183257600.

لكنني لا أحصل على - C ++ ليست لغة Python ، لذلك عند تحميل برنامج Godot الثنائي ، يجب أن يقوم النظام بتحميل برنامج التشغيل dll ويفشل مع تحذير من عدم وجود رمز معين. لماذا لم يحدث ذلك؟

أم أن هذا يعني أن Godot ينفذ بالفعل ربط وقت التشغيل الديناميكي ، لكنه لا يحذر من فقدان الرموز؟

يقوم glew بربط وقت التشغيل ، ولهذا السبب توجد الوظيفة ولكن يمكن ذلك
احيانا تكون فارغة ..

في 12 فبراير 2016 الساعة 13:41 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

أو هل يعني ذلك أن Godot يطبق بالفعل ربط وقت التشغيل الديناميكي ،
لكن لا تحذر من فقدان الرموز؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183401773.

@ punto- هذا لا يبدو صحيحًا. هل يستطيع هذا GLEW حقن بذراتك الخاصة لهذه الوظائف NULL التي تشكو من الخطأ بدلاً من segfaulting؟

لا أعلم .. ربما .. ستكون فكرة جيدة

في 12 فبراير 2016 الساعة 15:01 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

@ punto- https://github.com/punto- هذا لا يبدو صحيحًا. يمكن هذا
تقوم GLEW بحقن الأوتار الخاصة بك لهذه الوظائف NULL التي تشتكي معها
خطأ بدلا من segfaulting؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183431329.

C ++ ليست بيثون ، لكن بيثون هي C :) ربما يبحث glew عن الرموز
وعندما لا تكون موجودة ، فإنها تقوم بتعيين NULL لمؤشر الدالة. أنا
لا تتذكر كل التفاصيل مع ذلك ، ولكن هذا ما يحدث دائمًا ،
مهما كانت الوظيفة من gl هي NULL ..

في 12 فبراير 2016 الساعة 13:40 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

لكنني لا أحصل على - C ++ ليست لغة Python ، لذلك عند تحميل برنامج godot الثنائي ، فإن ملف
يجب أن يقوم النظام بتحميل برنامج التشغيل dll ويفشل مع تحذير من أن الرمز المحدد هو
غير موجود. لماذا لم يحدث ذلك؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183401442.

هل يمكن لأي شخص لديه إحدى بطاقات Intel هذه تجربة هذا البناء؟

http://op.godotengine.org : 81 / godot.windows.tools.angle.32.exe

في 12 فبراير 2016 الساعة 15:45 ، كتب أرييل منظور [email protected] :

C ++ ليست بيثون ، لكن بيثون هي C :) ربما يبحث glew عن الرموز
وعندما لا تكون موجودة ، فإنها تقوم بتعيين NULL لمؤشر الدالة. أنا
لا تتذكر كل التفاصيل مع ذلك ، ولكن هذا ما يحدث دائمًا ،
مهما كانت الوظيفة من gl هي NULL ..

في 12 فبراير 2016 الساعة 13:40 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

لكنني لا أحصل على - C ++ ليست لغة Python ، لذلك عند تحميل برنامج godot الثنائي ، فإن ملف
يجب أن يقوم النظام بتحميل برنامج التشغيل dll ويفشل مع تحذير من أن الرمز المحدد هو
غير موجود. لماذا لم يحدث ذلك؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183401442
.

image

رأي 32

32 بت .. هل من الممكن أن تقبل النوافذ 64 بت فقط؟

في 14 فبراير 2016 الساعة 01:29 ، تم إرسال إشعارات anatoly techtonik
كتب:

[صورة: صورة]
https://cloud.githubusercontent.com/assets/515889/13031852/90815d62-d2ec-11e5-8b8c-ccbc54af1f48.png

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183819635.

تظهر مشي التبعية أنها وحدة 64 بت مرتبطة بـ libs 32 بت.

هل تقول أي واحد؟

في 14 فبراير 2016 في تمام الساعة 01:38 ، تم إرسال إشعارات anatoly techtonik
كتب:

تظهر مشي التبعية أنها وحدة 64 بت مرتبطة بـ libs 32 بت.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237.

(أيضًا لماذا يعمل على جهاز الكمبيوتر الخاص بي؟ هل هذا وحدة المعالجة المركزية 32 بت؟)

في 14 فبراير 2016 الساعة 01:52 ، كتب أرييل منظور [email protected] :

هل تقول أي واحد؟

في 14 فبراير 2016 في تمام الساعة 01:38 ، تم إرسال إشعارات anatoly techtonik
كتب:

تظهر مشي التبعية أنها وحدة 64 بت مرتبطة بـ libs 32 بت.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237
.

هل يمكنك تجربة هذا؟

http://op.godotengine.org : 81 / godot.windows.opt.tools.angle.64.exe

في 14 فبراير 2016 الساعة 01:54 ، كتب أرييل منظور [email protected] :

(أيضًا لماذا يعمل على جهاز الكمبيوتر الخاص بي؟ هل هذا وحدة المعالجة المركزية 32 بت؟)

في 14 فبراير 2016 الساعة 01:52 ، كتب أرييل منظور [email protected] :

هل تقول أي واحد؟

في 14 فبراير 2016 الساعة 01:38 ، أناتولي تيكتونيك < [email protected]

كتب:

تظهر مشي التبعية أنها وحدة 64 بت مرتبطة بـ libs 32 بت.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237
.

على جهاز الكمبيوتر المحمول القديم (Intel gma x3100) لا يتعطل ، لكن النافذة تظل رمادية مع ظهور الأخطاء التالية:

ERROR: ShaderGLES2::get_current_version: CanvasShaderGLES2: Program LINK FAILED:
Failed to create D3D shaders.
   At: drivers\gles2\shader_gles2.cpp:544
ERROR: ShaderGLES2::get_current_version: Method/Function Failed, returning: 0
   At: drivers\gles2\shader_gles2.cpp:551
ERROR: ShaderGLES2::bind: Condition ' !version ' is true. returned: false
   At: drivers\gles2\shader_gles2.cpp:126
ERROR: ShaderGLES2::_get_uniform: Condition ' !version ' is true. returned: -1
   At: .\drivers/gles2/shader_gles2.h:354

هل يمكن أن يكون إصدار تظليل قديم جدًا؟
لكن من الغريب أنه يحاول استخدام D3D بدلاً من GLSL ...

في الأحد 14 فبراير 2016 الساعة 9:03 صباحًا ، كتب Hondres [email protected] :

على جهاز الكمبيوتر المحمول القديم (intel gma x3100) لا يتلف ، لكن النافذة تبقى
الرمادي مع وجود الأخطاء التالية:

خطأ: ShaderGLES2 :: get_current_version: CanvasShaderGLES2: فشل رابط البرنامج:
فشل إنشاء تظليل D3D.
لدى: السائقين \ gles2 \ shader_gles2. الحزب الشيوعي الصيني: 544
خطأ: ShaderGLES2 :: get_current_version: فشل الطريقة / الوظيفة ، والعودة: 0
لدى: السائقين \ gles2 \ shader_gles2. الحزب الشيوعي الصيني: 551
خطأ: ShaderGLES2 :: bind: الشرط '! version' صحيح. عاد: خطأ
لدى: السائقين \ gles2 \ shader_gles2. CPP: 126
خطأ: ShaderGLES2 :: _ get_uniform: الحالة '! version' صحيحة. عاد: -1
عند:. \ drivers / gles2 / shader_gles2.h: 354

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183827627.

فهل هناك حالة تعمل فيها الرسومات باستخدام الزاوية وليس gl مباشرة؟

في 14 فبراير 2016 الساعة 03:25 ، كتب سيرجي لابين [email protected] :

هل يمكن أن يكون إصدار تظليل قديم جدًا؟
لكن من الغريب أنه يحاول استخدام D3D بدلاً من GLSL ...

في الأحد 14 فبراير 2016 الساعة 9:03 صباحًا ، كتب Hondres [email protected] :

على جهاز الكمبيوتر المحمول القديم (intel gma x3100) لا يتلف ، لكن النافذة تبقى
الرمادي مع وجود الأخطاء التالية:

خطأ: ShaderGLES2 :: get_current_version: CanvasShaderGLES2: Program LINK
فشل:
فشل إنشاء تظليل D3D.
لدى: السائقين \ gles2 \ shader_gles2. الحزب الشيوعي الصيني: 544
خطأ: ShaderGLES2 :: get_current_version: فشل الطريقة / الوظيفة ،
العودة: 0
لدى: السائقين \ gles2 \ shader_gles2. الحزب الشيوعي الصيني: 551
خطأ: ShaderGLES2 :: bind: الشرط '! version' صحيح. عاد: خطأ
لدى: السائقين \ gles2 \ shader_gles2. CPP: 126
خطأ: ShaderGLES2 :: _ get_uniform: الحالة '! version' صحيحة.
عاد: -1
عند:. \ drivers / gles2 / shader_gles2.h: 354

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -183827627
.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183830014.

@ punto- أبلغت الأدوات أن godot.windows.tools.angle.32.exe ليس ملف PE صالحًا قابلاً للتنفيذ. هل يمكنك نشر إصدار لا يتأثر بـ UPX؟

IMAGE_OPTIONAL_HEADER.Magic الخاص به يساوي IMAGE_NT_OPTIONAL_HDR64_MAGIC وهو خاطئ https://msdn.microsoft.com/en-us/library/windows/desktop/ms680339٪28v=vs.85٪29.aspx

حسنًا ، جرب هذا:

http://op.godotengine.org : 81 / godot.windows.opt.tools.angle.32.exe

لا يتم ضغطه بواسطة upx

في 14 فبراير 2016 الساعة 05:10 ، anatoly techtonik [email protected]
كتب:

@ punto- https://github.com/punto- IMAGE_OPTIONAL_HEADER. السحر هو
يساوي IMAGE_NT_OPTIONAL_HDR64_MAGIC وهو خطأ
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680339٪28v=vs.85٪29.aspx

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183846301.

لا تزال نفس المشكلة. يعتقد depends أنه ثنائي 64 بت ، وليس فقط depends :

E:\_IDE_\godot>file godot.windows.opt.tools.angle.32.exe
godot.windows.opt.tools.angle.32.exe: PE32+ executable (console) x86-64, for MS Windows

إنها أداة يونكس ، راجع للشغل.

Hinsbart هل يمكنك تجربة هذا http://tof.p1x.in/html5/ على الكمبيوتر حيث تظهر الشاشة الرمادية وهذا الخطأ؟ من المفترض أن يستخدم الكروم نفس الكود الخاص بجهاز العرض ..

techtonik ربما أواجه هذا الخطأ حيث أستخدم البتات = 32 وأحصل بالفعل على ثنائي 64 بت؟

@ punto - لا أعرف كيف تقوم بتجميعها أو ما الخطأ الذي تشير إليه. قد توضح ذلك سجلات الأوامر وإنشاء السجلات. يمكنني تجميعها بنفسي إذا كنت مستعدًا لإجراء تغييراتك في فرع ما.

نعم أنا في ذلك

ها هو https://github.com/punto-/godot/tree/angle

في 15 فبراير 2016 الساعة 14:53 ، تم إرسال إخطارات anatoly techtonik
كتب:

@ punto- https://github.com/punto- لا أعرف كيف تقوم بتجميعها أو
ما الخطأ الذي يشير إليه. قد توضح ذلك سجلات الأوامر وإنشاء السجلات. يمكنني
قم بتجميعها بنفسي إذا كنت مستعدًا لإجراء تغييراتك في أحد الفروع.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184323695.

تجميع بزاوية = نعم

في 15 فبراير 2016 الساعة 15:25 ، كتب أرييل منظور [email protected] :

ها هو https://github.com/punto-/godot/tree/angle

في 15 فبراير 2016 الساعة 14:53 ، تم إرسال إخطارات anatoly techtonik
كتب:

@ punto- https://github.com/punto- لا أعرف كيف تقوم بتجميعها
أو ما الخلل الذي تشير إليه. قد توضح ذلك سجلات الأوامر وإنشاء السجلات. أنا
يمكنك تجميعها بنفسي إذا كنت مستعدًا لإجراء تغييراتك على بعضها
فرع شجرة.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184323695
.

scons: *** [drivers\theora\theora\x86\mmxencfrag.windows.tools.32.o] Source `drivers\theora\theora\x86\mmxencfrag.c' not found, needed by target `drivers\theora\theora\x86\mmxencfrag.windows.tools.32.o'.
scons: building terminated because of errors.

لا حظ.

حاول أيضًا باستخدام theora_opt = لا

في 15 فبراير 2016 في تمام الساعة 18:40 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

scons: *** [drivers \ theora \ theora \ x86 \ mmxencfrag.windows.tools.32.o] المصدر drivers\theora\theora\x86\mmxencfrag.c' not found, needed by target drivers \ theora \ theora \ x86 \ mmxencfrag.windows.tools.32.o '.
scons: تم إنهاء المبنى بسبب وجود أخطاء.

لا حظ.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184405417.

In file included from drivers\angle/common/angleutils.h:12:0,
                 from drivers\angle\common\angleutils.cpp:7:
drivers\angle/common/platform.h:62:28: fatal error: d3d11_1.h: No such file or directory
 #       include <d3d11_1.h>
                            ^

نقطة؟

حسنًا ، هذه هي نقطة الزاوية ، فهي تستخدم 3d المباشر بدلاً من opengl: p

في 15 فبراير 2016 ، الساعة 18:57 ، أرسل رسالة إلى anatoly techtonik [email protected]
كتب:

في الملف المتضمن من السائقين \ زاوية / عام / زاوية أوتيلس: 12: 0 ،
من السائقين \ الزاوية \ المشتركة \ الزاوية. CPP: 7 :
السائقين \ الزاوية / المشتركة / النظام الأساسي. h: 62: 28: خطأ فادح: d3d11_1.h: لا يوجد مثل هذا الملف أو الدليل
# تضمن
^

نقطة؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184411949.

يحتوي ANGLE على نقطتين خلفيتين - أحدهما يستخدم DirectX 9. أقوم بتنزيل MinGW أحدث برؤوس DirectX 11 الآن.

تم إنشاء السياق في platform / windows / gl_context_egl_angle.cpp ، I.
أعتقد أن هناك معلمة لاختيار الواجهة الخلفية .. أعتقد أن
المشكلة في هذا الملف ، قد تكون هناك طريقة لاكتشاف ما هي المعلمات
الأفضل للنظام ..

في 16 فبراير 2016 الساعة 05:51 ، تم إرسال إخطارات anatoly techtonik
كتب:

يحتوي ANGLE على نقطتين خلفيتين - أحدهما أقدم يستخدم DirectX 9. أقوم بتنزيل أحدث
MinGW مع رؤوس DirectX 11 الآن.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184580963.

الكثير من الأخطاء مع الإصدار 5.3.0 من مجلس التعاون الخليجي الأحدث ، على سبيل المثال:

In file included from drivers\angle\common\angleutils.cpp:7:0:
drivers\angle/common/angleutils.h:29:21: warning: defaulted and deleted functions only available with -std=c++11 or -std=gnu++11
     NonCopyable() = default;
                     ^
...

تحتاج إلى إضافة -std=c++11 إلى أعلام C ++ على ما أعتقد.
على سبيل المثال ، أضف هذا السطر بعد: https://github.com/punto-/godot/blob/angle/drivers/angle/SCsub#L276

env_angle.Append(CCFLAGS=['-std=c++11'])

لست متأكدًا مما إذا كانت البنية ستعمل مع MSVC ، ولكن مع MinGW يجب أن يكون جيدًا.

drivers\angle\libANGLE\renderer\d3d\d3d11\win32\NativeWindow.cpp:15:19: fatal error:
dcomp.h: No such file or directory
compilation terminated.

بحاجة إلى انتظار إصدار MinGW الجديد .

ربما يجب نقل المناقشة حول ANGLE إلى مشكلة منفصلة ، مع الاحتفاظ بهذه المشكلة لـ "إخبار المستخدم أن أجهزته قديمة وغير مدعومة قبل تعطلها"؟

نعم أوافق

في 17 فبراير 2016 الساعة 13:25 ، Rémi Verschelde [email protected]
كتب:

ربما يجب نقل المناقشة حول ANGLE إلى قضية منفصلة ،
الاحتفاظ بهذا الخيار "لإخبار المستخدم بأن أجهزته قديمة و
غير مدعوم قبل الانهيار "؟

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -185282158.

3634 هي قضية ANGLE. # 3694 هو العلاقات العامة للحصول على مزيد من المعلومات عند تحميل المحرك.

تضمين التغريدة

لماذا يعمل Godot بطريقة سحرية على Ubuntu وليس على Windows؟

نعم! أود أن أعرف السبب أيضًا. إنه يعمل عندما اختبرت مع Xubuntu ولكن ليس على أي من إصدارات Windows.

^ ^

لا يتعلق الأمر بنظام التشغيل ، إنه يتعلق بالسائقين. بشكل عام ، يتم إهمال برامج تشغيل GL على نظام Windows مقارنةً بنظام Linux ، وذلك بفضل Direct3D. ينتهي الأمر بالكثير من وحدات معالجة الرسومات الأقدم مع تطبيق GL 1.5 على الإصدارات الأحدث من Windows.

تضمين التغريدة

ينتهي الأمر بالكثير من وحدات معالجة الرسومات الأقدم مع تطبيق GL 1.5 على الإصدارات الأحدث من Windows.

إذن متى سيتم دعم إصدارات OpenGL السابقة في Godot؟ هل هناك ضرورة مطلقة صريحة للاعتماد على 2.0+؟ ليس الأمر وكأن التوافق مع الإصدارات السابقة غير موجود ، لذا لن يفشل الجهاز الأكثر قدرة في تقديم نسخة سابقة من OpenGL. هل هناك ميزات للمحرر المرئي نفسه مبنية حول GLES2 والتي لا يمكن تقليصها لاستخدام GL1.4 بدلاً من ذلك؟ أعني أن معظم ميزات GL اللاحقة مخصصة للعرض ثلاثي الأبعاد على أي حال ، والتي لا داعي لها عندما تأتي من منظور نية إنشاء لعبة ثنائية الأبعاد باستخدام Godot.

WinnerEX هذا لن يحدث. إن التوافق مع GL 1.4 يعني التخلي عن العديد من الميزات المثيرة للاهتمام التي يتم استخدامها لكل من 2D و 3D ؛ وعلى الطرف الآخر من الطيف ، لدينا أشخاص لا يمكنهم الانتظار لفترة أطول للحصول على دعم GL 3+ أو حتى Vulkan. يمكنك اعتبار Godot محرك GL 2.1+ بأمان ؛ إذا لم يكن هذا ما تريده ، فهناك الكثير من المحركات الأخرى التي قد يكون لها قيود GL أقل (على سبيل المثال OGRE 1.9 أو SDL 2.0).

الموضوع هنا هو أن Godot يجب أن يعطي خطأ مناسبًا عندما لا تتوفر ميزات GL 2.1+ المطلوبة بدلاً من التعطل ؛ ليس هناك نية لإعادة كتابة عارض GLES1. بالنسبة لمستخدمي Windows ، قد يكون هناك بعض الأمل إذا تم دمج ANGLE لمحاكاة GL عبر Direct3D ، ولكن لن يكون هناك تخفيض في عارض GLES2.

العودة إلى الموضوع: reduz ، اعتقدت أنه قد يكون من الممكن إعادة إنتاج العطل حتى على الأجهزة القادرة على GL 2.1 من خلال محاولة تحميل Godot في جهاز افتراضي بدون تسريع ثنائي وثلاثي الأبعاد. سأحاول في أسرع وقت ممكن للتأكيد ، ولكن قد يساعد ذلك في معرفة مكان تعطله ، وكيفية الإنقاذ بشكل صحيح من خلال رسالة خطأ يمكن قراءتها بواسطة الإنسان بدلاً من segfaulting.

اعتقدت أنه قد يكون من الممكن إعادة إنتاج العطل حتى على الأجهزة القادرة على GL 2.1 من خلال محاولة تحميل Godot في جهاز افتراضي بدون تسريع ثنائي وثلاثي الأبعاد. سأحاول في أسرع وقت ممكن للتأكيد

حسنًا ، يبدو أنه مع VirtualBox 5 ليس بالأمر السهل لأنه يحتوي الآن على برنامج تشغيل GL لائق يدعم ما يصل إلى OpenGL 3.0 xD.

يعد برنامج opengl 3.0 أسهل للكشف ، لأنه يتعين عليك طلب إشارة خاصة
(أنا أقف)

يوم الاثنين ، 25 يوليو 2016 ، الساعة 12:28 مساءً ، Rémi Verschelde [email protected]
كتب:

اعتقدت أنه قد يكون من الممكن إعادة إنتاج الانهيار حتى في GL 2.1
أجهزة قادرة من خلال محاولة تحميل Godot في جهاز افتراضي بدون 2D
وتسريع ثلاثي الأبعاد. سأحاول في أسرع وقت ممكن للتأكيد

حسنًا ، يبدو أنه مع برنامج VirtualBox 5 ليس بالأمر السهل لأنه يحتوي الآن على برنامج
برنامج تشغيل GL يدعم ما يصل إلى OpenGL 3.0 xD.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -234987968 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AF-Z2_MK5iQA0RxLwv0FHu6po8ucVE8kks5qZNYlgaJpZM4DQoN3
.

لقد أجريت للتو اختبارًا على نتبووك القديم الخاص بي باستخدام Intel crappy intel igp غير المتوافق ، تحت Windows.

في السطر 10791 من rasterizer_gles2.cpp ، إلى RasterizerGLES2::init() أضفت هذه الأسطر القليلة:

    if (!glewIsSupported("GL_VERSION_2_1")) {
        print_line(String("Your graphics card is crappy. It does not support Opengl 2.1. Now Godot is going to crash."));
    }

لا يزال Godot يتعطل ، لكنه يعرض رسالة الخطأ هذه في وحدة التحكم قبل الإغماء مباشرة.

لا أعرف كيف أخبر Godot بإلغاء التهيئة النقطية (لا يُرجع RasterizerGLES2 :: init () صح / خطأ ، يبدو الأمر كما لو لم يكن لديه خيار سوى النجاح أو التعطل) ، ولا أعرف كيف أخبر Godot بالإقلاع بصورة صحيحة.

حتى لو لم يكن اختبار التوافق هذا موثوقًا بنسبة 100٪ ، فقد يقلل على الأقل من عدد الأعطال الصامتة ، ويعرض مربع حوار نظام صغير يحذر المستخدم من أنه سيتعطل ولماذا.

رهيبة العثور على SuperUserNameMan. لقد لعبت معها قليلاً وأؤكد أنها تعمل (على الأقل في اختباراتي حيث تحققت من if (glewIsSupported("GL_VERSION_2_1")) لأن وحدة معالجة الرسومات الخاصة بي تدعمها). يمكننا استخدام OS::alert() لعرض مربع رسالة حظر.

كما ذكرت ، فإن الجزء المفقود الوحيد (والأصعب) هو ترك Godot يخرج بشكل صحيح. لقد ألقيت نظرة سريعة ولكن هناك طريقة تجاوزت مجموعة مهاراتي لجعل Godot يغادر في منتصف تهيئة نظام التشغيل الخاص به.

فيما يلي اختلاف في إثبات المفهوم:

diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
index 4cd97a7..910d5bf 100644
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ b/drivers/gles2/rasterizer_gles2.cpp
@@ -10788,8 +10788,14 @@ void RasterizerGLES2::init() {
        if (OS::get_singleton()->is_stdout_verbose()) {
                print_line(String("GLES2: Using GLEW ") + (const char*) glewGetString(GLEW_VERSION));
        }
-#endif

+       // Check for GL 2.1 compatibility, if not bail out
+       if (!glewIsSupported("GL_VERSION_2_1")) {
+               ERR_PRINT("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\nTry a drivers update, buy a new GPU or move to Linux; Godot will now exit.");
+               OS::get_singleton()->alert("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(", "Insufficient OpenGL / GLES drivers");
+               // Now DIE! Or at least stop without segfault and memory leaks :)
+       }
+#endif



لتكون قادرًا على اختبار الأشخاص الذين لديهم دعم GL 2.1 ، ما عليك سوى إزالة ! في اختبار if.

يولد مربع الرسائل (المنع) هذا على X11:
spectacle w30011

بعد المناقشة مع reduz ، يبدو أن التصحيح أعلاه قد يكون جيدًا بما يكفي كخطوة أولى ؛ نظرًا لأن تنبيه نظام التشغيل محظور ، يمكننا إخبار الأشخاص بالمشكلة وتحذيرهم من أن Godot سيتعطل :) سيكون الخروج بشكل نظيف بالطبع أفضل ، ولكن هذا الحل الوسيط من الجيد بالفعل.

للاختبار في نظام Linux دون تغيير الكود وإعادة التجميع ، أعتقد أنه يمكنك تعيين متغير البيئة MESA_GL_VERSION_OVERRIDE على 2.0: http://www.mesa3d.org/envvars.html

IIRC ، هذا أيضًا هو كيفية المضي قدمًا في إجبار MESA على السماح لوحدة معالجة الرسومات المدرجة في القائمة السوداء بالعمل مع Godot.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

gonzo191 picture gonzo191  ·  3تعليقات

testman42 picture testman42  ·  3تعليقات

timoschwarzer picture timoschwarzer  ·  3تعليقات

SleepProgger picture SleepProgger  ·  3تعليقات

ducdetronquito picture ducdetronquito  ·  3تعليقات