Godot: GPUの機能を確認し、正常に終了する必要があります

作成日 2015年01月10日  ·  87コメント  ·  ソース: godotengine/godot

Godotは、システムがGLES2を処理できるかどうかを何らかの方法でチェックし、中止または失敗する代わりに、GLES2をサポートしていないドライバーについてユーザーに意味のあるエラーメッセージを表示する必要があると思います。 「お使いのコンピュータは現在、このプログラムの実行に必要なGLES2をサポートしていないようです。新しいドライバまたはハードウェアのアップグレードが必要です。」 それらの線に沿った何か。

これが何をするのかはわかりませんが、コードでそれを行う方法が必要です。

これは特に、常に安っぽいGPUと安っぽいドライバーを持っているように見えるWindowsユーザー向けですが、理想的にはすべてのプラットフォームでチェックが行われます。

bug enhancement core rendering

最も参考になるコメント

Windowsで、互換性のないくだらないIntel IGPを使用して、古いネットブックでテストを行ったところです。

rasterizer_gles2.cpp 10791行目で、 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()はtrue / falseを返しません、成功またはクラッシュする以外に選択肢がないようなものです)、Godotに終了するように指示する方法もわかりません正しく。

この互換性テストの信頼性が100%でない場合でも、少なくともサイレントクラッシュの数を減らし、クラッシュすることとその理由をユーザーに警告する小さなシステムダイアログボックスを表示することができます。

全てのコメント87件

+1

+10

+1

私はそのコードをcontext_gl_win.cppで書きましたが、一般的には次の理由でクラッシュします
くだらないドライバーによるWindowsのいくつかの実装されていない機能
理由を正確に知ることができればいいのに

14:56時土、2015年1月17日には、MSC [email protected]書きました:

+1


このメールに直接返信するか、GitHubで表示してください
https://github.com/okamstudio/godot/issues/1162#issuecomment-70376758

これは非常に便利な機能であるため、今のところ優先度を高く設定します。 非常に古いIntelIGPを使用している人や、GLES2をサポートしていない人が原因でクラッシュが発生したという報告が多数寄せられています。

上記の「トン」に下線を引くのに十分なクラッシュを参照したと思います。アーカイブを掘り下げるのをやめます:D

+1 GodotがUbuntuで魔法のように機能するのに、Windowsでは機能しないのはなぜですか?

これを@reduzでどのように実装できるかについてのアイデアはありますか?

そのコードをcontext_gl_win.cppで記述しましたが、Windowsに実装されていない関数が原因で、通常はクラッシュします。

では、ダイナミックリンクを使用してみませんか? どの機能が欠落しているかは明らかです。 https://github.com/p3/regalがこれを行っていると思い

私はすでに検出を行い、メッセージを表示しようとしましたが、
まだ動作しません。
サポートされていないハードウェアがないので、なぜクラッシュするのかわかりません。
したがって、それを修正することはできません。
PRは大歓迎です。

2016年2月2日火曜日12:11 PM、anatoly techtonik < [email protected]

書きました:

私はそのコードをcontext_gl_win.cppで書きましたが、一般的には次の理由でクラッシュします
Windowsで実装されていない機能

では、ダイナミックリンクを使用してみませんか? どの機能が
行方不明。 https://github.com/p3/regalがこれを行っていると思い


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-178624438

古いGPUを使用している人が、Linux上のgdbを介してGodotを実行しようとすると、非常に役立つ可能性があります。 Windowsの「問題の署名」のデバッグ情報はまったく無意味に思えます:/

私はC ++をまったく行っていません。 Pythonだけなので、私はユーザーです。 何を実行するか教えてください。情報が得られる場合があります。

何を実行するか教えてください。情報が得られる場合があります。

Windowsでデバッガーを使用してデータを実行する方法についてはわかりませんが、Windowsでのコンパイルの経験があまりない人にとっては簡単なことではないと思います。 非常に使いやすいので、LinuxでGDBを使用してデバッグすることを誰かに提案したのはそのためです。

$ 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 (バックトレース)コマンドの出力をこのバグレポートにコピーします。

もちろん、問題はWindows固有である可能性があるため、Linuxでのデバッグは無意味ですが、Linuxユーザーには、ハードウェアがOpenGL(ES)2.1をサポートしていないことをユーザーに通知するために捕捉されなかったセグメンテーション違反もあったと思います。

LinuxでBeta2.0を実行できませんが、グラフィックカードとは関係がないようです-#3557

Heheあなたは私たちがコーナーケースで持っているすべての既知の問題に遭遇する幸運な人です:)

私は「不平を言う才能」とGitHubアカウントを持っているだけだと思います。 =)

起動時にクラッシュするような古いビデオカードについては知りませんが、たとえばNVIDIA 6800GTでは
いくつかのプロジェクトでのみクラッシュします。 したがって、すべてのプロジェクトとGodotモジュールのフレームバッファーエラーに関するcmd出力があります。 プロジェクトのラスタライザ設定で「fp16_framebuffer」設定を無効にすることで、完全に修正できます。 同じビデオカード(完全な接続についてはわかりません)で、「fragment_lighting」設定を無効にすることで完全に修正できる間違ったラスター化(テクスチャなし)があることを私は知っています。
したがって、Godotはこれらの機能がサポートされているかどうかを確認し、サポートされていない場合はユーザーに注意して無効にする必要があると思います。
多分それは起動時のクラッシュにも役立つでしょう。

何を実行するか教えてください。情報が得られる場合があります。

$ gdb / path / to / godot / binary //可能であれば、デバッグモードで自己コンパイルし、詳細情報を取得します

Godot_v2.0_beta_20160205_x11.64は、同じハードウェアを使用するFedora23ではクラッシュしません。 そこでMobile Intel® GM45 Express Chipsetとして検出されます。

Godot_v2.0_beta_20160205_win32.exeはVista32でもクラッシュします。

@techtonikその理由は、Windowsとは異なり、ハードウェアOpenGLに問題がある場合、LinuxはOpenGLのソフトウェア実現を使用するためだと思いますが、もちろんハードウェアよりも低速です。

@ Algrin6エンジンが、その事実にある程度の透明性を提供できれば素晴らしいと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 MBのメモリ! そして今、私は3 GB + 3 GHzを持っていて、ゲームエンジンを実行できません。 どうして?

2 MBのメモリ! そして今、私は3 GB + 3 GHzを持っていて、ゲームエンジンを実行できません。 どうして?

私たちは2016年にいて、そのBiowareエンジンは非常に古いからですか? また、このテストは、グラフィックスドライバーが十分に強力かどうかを確認するように設計されているため、DirectX 3.01a以降のテストは「機能している」可能性がありますが、DirectX 7などを下回っている場合は、「ハードウェアまたはドライバーをアップグレードしてください」と表示される可能性があります。 そして、BiowareエンジンはMS Windows <= XPでのみ動作していましたが、Godotは12のプラットフォームで動作します...

何をする必要があるかを正確に理解しているようですので、プルリクエストを行ってください。

これに関する@techtonikの大きな問題は、コア開発者の誰もが問題をテストするための古いハードウェアを持っていないことです。 したがって、問題の原因を特定するためのデバッグ情報を提供するか、自分で修正する必要があります(これはオープンソースの美しさです)。

Baldurのゲートは、汎用の2D / 3Dゲームエンジンではプログラムされていません。
これは、C、x86アセンブラー、おそらくWatcomでプログラムされたカスタムメイドです。
コンパイラ、プロテクトモード、スクリプト用の基本的なスタックマシンを使用します。 また
すべてのカスタムブリッティングコードを自分で自由に実行してください。

12:36の日、2016年2月7日には、ジョージ・マルケス[email protected]
書きました:

@techtonikhttps ://github.com/techtonikこれに関する主な問題は
コア開発者の誰もが問題をテストするための古いハードウェアを持っていないこと。 そう
トラブルの原因を特定するためにデバッグ情報を提供するか、
自分で修正してください(これがオープンソースの美しさです)。


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-181034018

@reduzは、ゲームが現在使用しているすべての機能(

それが現時点で不可能である場合、これは少なくとも技術的に実現可能ですか?

検証のユースケースは、任意のブリットデバイスで実行してパフォーマンスを測定できる最小限のゲーム(テスト)を作成できるようにすることです。

@reduz https://github.com/godotengine/godot/issues/1162#issuecomment -180466018はどうですか?

@ Algrin6そのようなものが古いバージョンのOpenGLでサポートされているかどうかを確認するのは無意味です。 これらのGPUには、すべてがサポートされていることをOpenGLに通知するドライバーがあり、その後、速度が低下したり、フリーズしたり、クラッシュしたりする、ある種の奇妙なソフトウェアフォールバックが発生します。

私はそのような古いハードウェアが存在せず、地球から落ちたふりをすることを好みます。

それは「パッチは大歓迎」という意味だと思います誰もが拒否するのではないかと思います
うまく行われたサポート
古いプラットフォーム。

3時41分AMに木、2016年2月11日には、フアンLinietsky [email protected]
書きました:

@ Algrin6https ://github.com/Algrin6それかどうかを確認するのは無意味です
古いバージョンのOpenGLでサポートされています。 これらのGPUにはドライバーがあります
OpenGLにすべてがサポートされていることを伝えてから、ある種の
遅い、フリーズまたはクラッシュする奇妙なソフトウェアフォールバック。

私はそのような古いハードウェアが存在せず、倒れたふりをしたい
惑星から。


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-182658216

私はまだ古いチップセットを持っている誰かがより良く貢献するのを待っています
サポートされていないハードウェアの検出。 それ以来、私はそのハードウェアを持っていません
10年なので、私にできることは何もありません。

午後11時30分水曜日、2016年2月10日には、セルゲイ・ラパン[email protected]
書きました:

それは「パッチは大歓迎」という意味だと思います誰もが拒否するのではないかと思います
うまく行われたサポート
古いプラットフォーム。

3時41分AMに木、2016年2月11日には、フアンLinietsky [email protected]
書きました:

@ Algrin6https ://github.com/Algrin6それかどうかを確認するのは無意味です
古いバージョンのOpenGLでサポートされています。 これらのGPUにはドライバーがあります
OpenGLにすべてがサポートされていることを伝えてから、ある種の
遅い、フリーズまたはクラッシュする奇妙なソフトウェアフォールバック。

私はそのような古いハードウェアが存在せず、倒れたふりをしたい
惑星から。


このメールに直接返信するか、GitHubで表示してください
< https://github.com/godotengine/godot/issues/1162#issuecomment -182658216


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-182676389

私は80年代から2000年初頭まで、PCを使用してストアにアクセスできます。
しかし、私はそうではないので、テストとデバッグの方法に関する詳細が必要です
Windows開発者であり、ツールなどについてのアイデアはありません。
win95se2ボックスを備えたi740のセットがあり、Pentim233MMXもあります。
会計上の理由により、これは2025年まで廃棄されません。

ところで、フアンは私にメールで連絡してもらえますか?
愚かなことでそれを攻撃しないでください。

5時48分AMに木、2016年2月11日には、フアンLinietsky [email protected]
書きました:

私はまだ古いチップセットを持っている誰かがより良く貢献するのを待っています
サポートされていないハードウェアの検出。 それ以来、私はそのハードウェアを持っていません
10年なので、私にできることは何もありません。

午後11時30分水曜日、2016年2月10日には、セルゲイ・ラパン[email protected]
書きました:

それは「パッチは大歓迎」という意味だと思います。
拒否する
うまく行われたサポート
古いプラットフォーム。

2016年2月11日木曜日午前3時41分、Juan Linietsky <
[email protected]>
書きました:

@ Algrin6https ://github.com/Algrin6それかどうかを確認するのは無意味です
古いバージョンのOpenGLでサポートされています。 これらのGPUにはドライバーがあります
それは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

それ以上戻る必要はありません。 インテルシリーズ3/4またはi940は
クラッシュさせるのに十分...
mingw / msvcでコンパイルし、代わりにクラッシュする理由を理解してみてください
ハードウェアがサポートされていないことをMessageBoxに表示する方法

午前12:00に木、2016年2月11日には、セルゲイ・ラパン[email protected]
書きました:

私は80年代から2000年初頭まで、PCを使用してストアにアクセスできます。
しかし、私はそうではないので、テストとデバッグの方法に関する詳細が必要です
Windows開発者であり、ツールなどについてのアイデアはありません。
win95se2ボックスを備えたi740のセットがあり、Pentim233MMXもあります。
会計上の理由により、これは2025年まで廃棄されません。

ところで、フアンは私にメールで連絡してもらえますか?
愚かなことでそれを攻撃しないでください。

5時48分AMに木、2016年2月11日には、フアンLinietsky [email protected]

書きました:

私はまだ古いチップセットを持っている誰かがより良く貢献するのを待っています
サポートされていないハードウェアの検出。 私はそのハードウェアを持っていません
以来
10年なので、私にできることは何もありません。

2016年2月10日水曜日午後11時30分、Sergey Lapin < [email protected]

書きました:

それは「パッチは大歓迎」という意味だと思います。
拒否する
うまく行われたサポート
古いプラットフォーム。

2016年2月11日木曜日午前3時41分、Juan Linietsky <
[email protected]>
書きました:

@ Algrin6https ://github.com/Algrin6かどうかを確認するのは無意味です
それ
古いバージョンのOpenGLでサポートされています。 これらのGPUには
運転手
それは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

MinGWを使用してgodot.windows.tools.32.exeをコンパイルしました。 クラッシュします。 次はどうする?

私が考えることができる唯一のことは、クラッシュをデバッグする必要があるということです。 私は
main()関数で開始し、各関数名を出力します
クラッシュしたものが見つかるまで実行され、印刷を追加するだけです。
関数の各行で、正確な行を見つけます
クラッシュし、結果を報告します。 また、あなたが得るようにmingwによってコンパイルされた場合
使用できるクラッシュアドレス
addr2line -e / path / to / debug / exe 0x

行番号を見つけるために。
この情報は非常に役立ちます、
しかし、それはデバッグがここで終了するという意味ではありませんが、それは大きなものになります
踏み出す。

2016年2月11日木曜日午後11時46分、anatoly techtonik <
[email protected]>は書いた:

MinGWを使用してgodot.windows.tools.32.exeをコンパイルしました。 クラッシュします。 次はどうする?


このメールに直接返信するか、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

ドライバーが関数を提供しないため、関数はNULLです。そのため、関数はNULLです。
クラッシュします。

1時21分に2016年2月12日には、アナトリー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であることがどこでわかりますか?

バックトレースの上部にあるフレーム0、0x00000の場合はアドレス、それがその方法です
nullの関数ポインタを呼び出すと次のようになります

6時58分に2016年2月12日には、アナトリーtechtonik [email protected]
書きました:

@ punto- https://github.com/punto- NULLであることがどこでわかりますか?


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-183257600

しかし、私は得られません-C ++はPythonではないので、godotバイナリがロードされると、システムはドライバーdllをロードし、指定されたシンボルが存在しないという警告で失敗するはずです。 なぜそれが起こらないのですか?

それとも、ゴドーが実際に動的なランタイムリンクを実装しているが、シンボルの欠落について警告しないことを意味しますか?

glewは実行時のリンクを行います。そのため、関数は存在しますが、
時々nullになります。

午後1時41分に2016年2月12日には、アナトリーtechtonik [email protected]
書きました:

それとも、ゴドーが実際に動的なランタイムリンクを実装していることを意味しますか?
しかし、シンボルの欠落について警告しませんか?


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-183401773

@ punto-これは正しくないようです。 このGLEWは、セグフォールトではなくエラーを訴えるこれらのNULL関数に独自のスタブを挿入できますか?

わからない..多分..それはいい考えだろう

15時01分に2016年2月12日には、アナトリーtechtonik [email protected]
書きました:

@ punto- https://github.com/punto-これは正しくないようです。 これはできますか
GLEWは、これらのNULL関数に対して独自のスタブを挿入します。
segfaultingの代わりにエラー?


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-183431329

C ++はPythonではありませんが、PythonはCです:)glewはおそらくシンボルを探します
それらが存在しない場合は、関数ポインタにNULLを割り当てます。 私
すべての詳細を覚えていないが、それは常にクラッシュする方法です、
glの関数はすべてNULLです。

午前13時40分に2016年2月12日には、アナトリー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

2016年2月12日15:45、Ariel [email protected]は次のように書いています。

C ++はPythonではありませんが、PythonはCです:)glewはおそらくシンボルを探します
それらが存在しない場合は、関数ポインタにNULLを割り当てます。 私
すべての詳細を覚えていないが、それは常にクラッシュする方法です、
glの関数はすべてNULLです。

午前13時40分に2016年2月12日には、アナトリーtechtonik [email protected]
書きました:

しかし、私は得られません-C ++はPythonではないので、godotバイナリがロードされると、
システムはドライバdllをロードし、指定されたシンボルが
現在ではない。 なぜそれが起こらないのですか?


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment -183401442

image

ビュー32

32ビットです。Windowsが64ビットのみを受け入れることは可能ですか?

1時29分に2016年2月14日には、アナトリーtechtonik [email protected]
書きました:

【画像:画像】
https://cloud.githubusercontent.com/assets/515889/13031852/90815d62-d2ec-11e5-8b8c-ccbc54af1f48.png


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-183819635

依存関係ウォーカーは、32ビットライブラリにリンクされた64ビットモジュールであることを示しています。

それはどれを言いますか?

1時38分に2016年2月14日には、アナトリーtechtonik [email protected]
書きました:

依存関係ウォーカーは、32ビットライブラリにリンクされた64ビットモジュールであることを示しています。


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-183820237

(また、なぜそれが私のコンピューターで動作するのですか?それは32ビットCPUですか?)

2016年2月14日01[email protected]は次のように書いています。

それはどれを言いますか?

1時38分に2016年2月14日には、アナトリーtechtonik [email protected]
書きました:

依存関係ウォーカーは、32ビットライブラリにリンクされた64ビットモジュールであることを示しています。


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237

これを試してみませんか?

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

2016年2月14日01 :54、Ariel

(また、なぜそれが私のコンピューターで動作するのですか?それは32ビットCPUですか?)

2016年2月14日01[email protected]は次のように書いています。

それはどれを言いますか?

2016年2月14日01:38、anatoly techtonik < [email protected]

書きました:

依存関係ウォーカーは、32ビットライブラリにリンクされた64ビットモジュールであることを示しています。


このメールに直接返信するか、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

古いシェーダーバージョンである可能性はありますか?
しかし、GLSLの代わりにD3Dのものを試すのは奇妙です...

9:03の日、2016年2月14日には、Hondres [email protected]書きました:

私の古いラップトップ(intel gma x3100)ではクラッシュしませんが、ウィンドウは残ります
次のエラーのある灰色:

エラー:ShaderGLES2 :: get_current_version:CanvasShaderGLES2:プログラムリンクが失敗しました:
D3Dシェーダーの作成に失敗しました。
で:drivers \ gles2 \ shader_gles2。 cpp:544
エラー:ShaderGLES2 :: get_current_version:メソッド/関数が失敗しました。戻り値:0
で:drivers \ gles2 \ shader_gles2。 cpp:551
エラー:ShaderGLES2 :: bind:条件 '!version'はtrueです。 返された:false
で:drivers \ gles2 \ shader_gles2。 cpp:126
エラー:ShaderGLES2 :: _ get_uniform:条件 '!version'はtrueです。 返された:-1
で:。\ drivers / gles2 / shader_gles2.h:354


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-183827627

では、グラフィックが直接glではなく角度を使用して機能する場合はありますか?

3時25分に2016年2月14日、セルゲイ・ラパンの[email protected]書きました:

古いシェーダーバージョンである可能性はありますか?
しかし、GLSLの代わりにD3Dのものを試すのは奇妙です...

9:03の日、2016年2月14日には、Hondres [email protected]書きました:

私の古いラップトップ(intel gma x3100)ではクラッシュしませんが、ウィンドウは残ります
次のエラーのある灰色:

エラー:ShaderGLES2 :: get_current_version:CanvasShaderGLES2:プログラムリンク
失敗しました:
D3Dシェーダーの作成に失敗しました。
で:drivers \ gles2 \ shader_gles2。 cpp:544
エラー:ShaderGLES2 :: get_current_version:メソッド/関数が失敗しました。
戻り値:0
で:drivers \ gles2 \ shader_gles2。 cpp:551
エラー:ShaderGLES2 :: bind:条件 '!version'はtrueです。 返された:false
で:drivers \ gles2 \ shader_gles2。 cpp:126
エラー:ShaderGLES2 :: _ get_uniform:条件 '!version'はtrueです。
返された:-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-toolsは、 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では圧縮されません

5時10分に2016年2月14日、アナトリーtechtonik [email protected]
書きました:

@ punto- https://github.com/punto-そのIMAGE_OPTIONAL_HEADER.Magicは
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は、 dependsだけでなく、64ビットバイナリであると考えています。

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

ところで、これはUNIXユーティリティです。

@Hinsbart灰色の画面とそのエラーが表示されるコンピューターで、このhttp://tof.p1x.in/html5/を試すことができますか? おそらくchromeはレンダラーに同じコードを使用しています。

@techtonik多分私はbits = 32を使用し、実際に64ビットのバイナリを取得するというバグがありますか?

@ punto-どのようにコンパイルするのか、どのバグが参照しているのかわかりません。 コマンドとビルドログはそれを明確にするかもしれません。 変更をブランチにコミットする準備ができている場合は、自分でコンパイルできます。

ええ、私はそれに乗っています

こちらはhttps://github.com/punto-/godot/tree/angleです

14時53分に2016年2月15日には、アナトリーtechtonik [email protected]
書きました:

@ punto- https://github.com/punto-どうやってコンパイルするのか、
どのバグが参照していますか。 コマンドとビルドログはそれを明確にするかもしれません。 できます
変更をブランチにコミットする準備ができている場合は、自分でコンパイルしてください。


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-184323695

angle = yesでコンパイルします

2016年2月15日15:25、Ariel [email protected]は次のように書いています。

こちらはhttps://github.com/punto-/godot/tree/angleです

14時53分に2016年2月15日には、アナトリーtechtonik [email protected]
書きました:

@ 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 = noでも試してください

18時40分に2016年2月15日には、アナトリー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>
                            ^

フルストップ?

それが角度のポイントです。openglの代わりにdirect3dを使用します:p

午後6時57分に2016年2月15日には、アナトリーtechtonik [email protected]
書きました:

drivers \ angle / common / angleutils.h:12:0からインクルードされたファイルでは、
drivers \ angle \ common \ angleutilsから。 cpp:7
drivers \ angle / common / platform.h:62:28:致命的なエラー:d3d11_1.h:そのようなファイルまたはディレクトリはありません
#含める
^

終止符?


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-184411949

ANGLEには2つのバックエンドがあります。古いものはDirectX9を使用しています。現在、DirectX11ヘッダーを備えた新しいMinGWをダウンロードしています。

コンテキストはplatform / windows / gl_context_egl_angle.cppに作成されます、I
バックエンドを選択するためのパラメータがそこにあったと思います。
問題はそのファイルにあります、パラメータが何であるかを検出する方法があるかもしれません
システムに最適です。

5時51分に2016年2月16日、アナトリーtechtonik [email protected]
書きました:

ANGLEには2つのバックエンドがあります-古いものはDirectX9を使用します私は新しいものをダウンロードしています
現在、DirectX11ヘッダーを備えたMinGW。


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-184580963

新しいgcc5.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;
                     ^
...

私が推測するC ++フラグに-std=c++11を追加する必要があります。
たとえば、次の行を追加します//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に関する議論は別の問題に移され、「クラッシュする前にハードウェアが古く、サポートされていないことをユーザーに伝える」ためにこれを維持する必要がありますか?

ええ、私は同意します

13時25分に2016年2月17日には、レミVerschelde [email protected]
書きました:

たぶん、ANGLEについての議論は別の問題に移されるべきです、
これを「ハードウェアが古いことをユーザーに伝え、
クラッシュする前にサポートされていません」?


このメールに直接返信するか、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment-185282158

3634はANGLEの問題です。 #3694は、エンジンをロードするときに詳細情報を取得するためのPRです。

@ Heybye44

GodotがUbuntuで魔法のように機能するのに、Windowsでは機能しないのはなぜですか?

はい! その理由も知りたいです。 Xubuntuでテストした場合は機能しますが、どのWindowsエディションでも機能しません。

^^

それはOSについてではなく、ドライバーについてです。 一般に、Direct3Dのおかげで、Linuxと比較してWindowsではGLドライバーは無視されます。 古いGPUの多くは、新しいバージョンのWindowsで最小限のGL1.5実装になります。

@adolson

古いGPUの多くは、新しいバージョンのWindowsで最小限のGL1.5実装になります。

では、以前のOpenGLバージョンがGodotでサポートされるのはいつですか? 2.0以降に依存する絶対的な明示的な必要性はありますか? 下位互換性が存在しないため、より高性能なデバイスがOpenGLの以前のイテレーションのレンダリングに失敗することはありません。 代わりにGL1.4を使用するために縮小できなかった、GLES2を中心に構築されたビジュアルエディター自体の機能はありますか? つまり、後のほとんどのGL機能はとにかく3Dレンダリング用であり、Godotを使用して2Dゲームを作成するという観点から見ると不要です。

@WinnerEXそれは起こりません。 GL 1.4と互換性があるということは、2Dと3Dの両方で使用される多くの興味深い機能を放棄することを意味します。 そして、その対極にあるのは、GL3 +のサポートやVulkanさえも待つことができなくなった人々です。 GodotはGL2.1以降のエンジンと安全に見なすことができます。 それが必要なものでない場合は、GL制限が低い可能性のある他のエンジンがたくさんあります(OGRE1.9やSDL2.0など)。

ここでのトピックは、必要なGL 2.1以降の機能がクラッシュする代わりに利用できない場合、ゴドーは適切なエラーを出す必要があるということです。 GLES1レンダラーを書き直す意図はありません。 Windowsユーザーの場合、AngLEがDirect3Dを介してGLエミュレーション用に統合されていると期待できるかもしれませんが、GLES2レンダラーのダウングレードはありません。

トピックに戻る: @ reduz 、2Dおよび3Dアクセラレーションなしで仮想マシンにGodotをロードしようとすると、

2Dおよび3Dアクセラレーションなしで仮想マシンにGodotをロードしようとすると、GL2.1対応のハードウェアでもクラッシュを再現できるのではないかと思いました。 確認のためにできるだけ早く試してみます

了解しました。VirtualBox5では、OpenGL 3.0 xDまでをサポートする適切なGLドライバーが搭載されているため、簡単ではありません。

opengl 3.0は、特別な接続を要求する必要があるため、検出が簡単です。
(私は選ぶ)

12:28時月、2016年7月25日には、レミVerschelde [email protected]
書きました:

GL2.1でもクラッシュを再現できるのではないかと思いました
2Dなしで仮想マシンにGodotをロードしようとすることによる対応ハードウェア
および3Dアクセラレーション。 確認のためにできるだけ早く試してみます

了解しました。VirtualBox5では、まともなものになっているため、簡単ではありません。
最大OpenGL3.0xDをサポートするGLドライバー。


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/godotengine/godot/issues/1162#issuecomment -234987968、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AF-Z2_MK5iQA0RxLwv0FHu6po8ucVE8kks5qZNYlgaJpZM4DQoN3

Windowsで、互換性のないくだらないIntel IGPを使用して、古いネットブックでテストを行ったところです。

rasterizer_gles2.cpp 10791行目で、 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()はtrue / falseを返しません、成功またはクラッシュする以外に選択肢がないようなものです)、Godotに終了するように指示する方法もわかりません正しく。

この互換性テストの信頼性が100%でない場合でも、少なくともサイレントクラッシュの数を減らし、クラッシュすることとその理由をユーザーに警告する小さなシステムダイアログボックスを表示することができます。

@SuperUserNameManを見つけてください。 私はそれを少し試してみて、それが機能することを確認しました(少なくとも、GPUがサポートしているのでif (glewIsSupported("GL_VERSION_2_1"))をチェックしたテストでは)。 OS::alert()を使用して、ブロックメッセージボックスを表示できます。

あなたが言ったように、唯一欠けている部分(そして最も難しい部分)は、Godotを適切に終了させることです。 ざっと見てみましたが、OSの初期化の途中で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

コードを変更して再コンパイルせずにLinuxでテストするには、環境変数MESA_GL_VERSION_OVERRIDEを2.0に設定できると思います: http

IIRC、それはまた、ブラックリストに載っているGPUがGodotと連携できるようにMESAを強制する方法でもあります。

このページは役に立ちましたか?
0 / 5 - 0 評価