Godot: harus memeriksa kemampuan GPU dan keluar dengan anggun

Dibuat pada 10 Jan 2015  ·  87Komentar  ·  Sumber: godotengine/godot

Saya pikir Godot entah bagaimana harus memeriksa apakah sistem dapat menangani GLES2 atau tidak, dan bukannya membatalkan atau gagal, menyajikan pesan kesalahan yang berarti kepada pengguna tentang driver mereka yang tidak mendukung GLES2. "Komputer Anda tampaknya saat ini tidak mendukung GLES2, yang diperlukan untuk menjalankan program ini. Driver baru atau peningkatan perangkat keras diperlukan." Sesuatu di sepanjang garis itu.

Saya tidak yakin apa yang harus dilakukan ini, tetapi harus ada cara untuk melakukannya dalam kode.

Ini khusus untuk pengguna Windows yang tampaknya selalu memiliki GPU yang jelek dan driver yang jelek, tetapi idealnya pemeriksaan akan dilakukan di semua platform.

bug enhancement core rendering

Komentar yang paling membantu

Saya baru saja menguji netbook lama saya dengan intel igp jelek yang tidak kompatibel, di bawah Windows.

Pada baris 10791 dari rasterizer_gles2.cpp , ke dalam RasterizerGLES2::init() saya telah menambahkan beberapa baris ini:

    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 masih macet, tetapi ini menampilkan pesan kesalahan ini ke konsol sebelum pingsan.

Saya tidak tahu bagaimana memberi tahu Godot untuk membatalkan inisialisasi rasterizer (RasterizerGLES2 :: init () tidak mengembalikan true / false, itu seperti jika tidak ada pilihan selain sukses atau macet), saya juga tidak tahu bagaimana memberi tahu Godot untuk berhenti tepat.

Bahkan jika uji kompatibilitas ini mungkin tidak 100% dapat diandalkan, setidaknya dapat mengurangi jumlah crash diam, dan menampilkan kotak dialog sistem kecil yang memperingatkan pengguna bahwa itu akan crash dan mengapa.

Semua 87 komentar

+1

+10

+1

saya menulis kode itu di context_gl_win.cpp tetapi umumnya macet karena
beberapa fungsi yang tidak diimplementasikan di windows karena driver yang buruk
Saya berharap saya bisa menemukan alasannya

Pada hari Sabtu, 17 Jan 2015 pukul 14.56, MSC [email protected] menulis:

+1

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/okamstudio/godot/issues/1162#issuecomment -70376758.

Menetapkan ini sebagai prioritas tinggi untuk saat ini karena ini akan menjadi fitur yang sangat berguna. Kami mendapatkan banyak sekali laporan kerusakan karena orang-orang memiliki IGP Intel yang sangat tua atau yang lainnya yang tidak mendukung GLES2.

Oke, saya rasa saya telah mereferensikan cukup banyak kerusakan untuk menggarisbawahi "ton" saya di atas, saya akan berhenti menggali arsip: D

+1 Mengapa Godot bekerja secara ajaib di Ubuntu tetapi tidak di Windows?

Ada ide tentang bagaimana ini dapat diterapkan @reduz?

saya menulis kode itu di context_gl_win.cpp tetapi umumnya macet karena beberapa fungsi yang tidak diimplementasikan di windows

Mengapa tidak menggunakan tautan dinamis? Akan terlihat jelas fungsi mana yang hilang. Saya percaya bahwa https://github.com/p3/regal melakukan ini.

Saya sudah melakukan deteksi dan mencoba menampilkan pesan, tetapi tampaknya begitu
masih belum berhasil.
Karena saya tidak memiliki perangkat keras yang tidak didukung, saya tidak dapat melihat mengapa perangkat keras tersebut rusak dan
jadi, tidak bisa memperbaikinya.
Humas menyambut.

Pada Sel, 2 Feb 2016 jam 12:11, anatoly techtonik < [email protected]

menulis:

saya menulis kode itu di context_gl_win.cpp tetapi umumnya macet karena
beberapa fungsi yang tidak diimplementasikan di windows

Mengapa tidak menggunakan tautan dinamis? Nanti jelas fungsinya yang mana
hilang. Saya percaya bahwa https://github.com/p3/regal melakukan ini.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -178624438.

Jika seseorang dengan GPU lama dapat mencoba menjalankan Godot melalui gdb di Linux, itu mungkin cukup membantu. Info debug "tanda masalah" Windows sepertinya tidak berguna: /

Saya tidak melakukan C ++ sama sekali. Hanya Python, jadi saya adalah pengguna. Beri tahu saya apa yang harus dijalankan dan saya mungkin mendapatkan infonya.

Beri tahu saya apa yang harus dijalankan dan saya mungkin mendapatkan infonya.

Saya tidak tahu bagaimana menjalankan sesuatu melalui debugger di Windows, tapi saya pikir itu tidak sepele bagi orang yang tidak memiliki banyak pengalaman mengompilasi barang di Windows. Itulah mengapa saya menyarankan seseorang untuk mencoba men-debug dengan GDB di Linux, karena sangat mudah digunakan:

$ 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

dan salin output dari perintah bt (backtrace) ini ke laporan bug ini.

Tentu saja bisa jadi masalahnya adalah khusus Windows, jadi debugging di Linux tidak ada gunanya, tetapi saya yakin pengguna Linux juga memiliki segfault yang tidak diketahui untuk memberi tahu pengguna bahwa perangkat keras mereka tidak mendukung OpenGL (ES) 2.1.

Beta 2.0 gagal dijalankan di Linux saya, tetapi tampaknya tidak terkait dengan kartu grafis - # 3557

Hehe Anda beruntung karena mengalami semua masalah yang diketahui yang kami miliki dalam kasus sudut :)

Saya rasa saya hanya memiliki "bakat pengeluh" dan akun GitHub. =)

Saya tidak tahu tentang kartu video lama yang mogok saat startup, tetapi pada, misalnya, pada NVIDIA 6800 GT,
itu crash hanya pada beberapa proyek. Jadi ada keluaran cmd tentang kesalahan framebuffer pada semua proyek dan modul Godot. Ini dapat diperbaiki sepenuhnya dengan menonaktifkan pengaturan "fp16_framebuffer" di pengaturan rasterizer proyek. Saya tahu, pada kartu video yang sama (tidak tahu tentang koneksi penuh), ada rasterisasi yang salah (tidak ada tekstur) yang bisa diperbaiki sepenuhnya dengan menonaktifkan pengaturan "fragment_lighting".
Jadi saya pikir Godot harus memeriksa apakah fungsi-fungsi ini didukung, dan jika tidak, catat pengguna dan nonaktifkan mereka.
Mungkin itu akan membantu dengan crash saat startup juga.

Beri tahu saya apa yang harus dijalankan dan saya mungkin mendapatkan infonya.

$ gdb / path / to / godot / binary // jika memungkinkan dikompilasi sendiri dalam mode debug, untuk mendapatkan info lebih lanjut

Godot_v2.0_beta_20160205_x11.64 tidak macet di Fedora 23 dengan perangkat keras yang sama. Itu terdeteksi sebagai Mobile Intel® GM45 Express Chipset sana.

Godot_v2.0_beta_20160205_win32.exe masih macet di Vista 32.

@techtonik Saya pikir alasannya adalah bahwa Linux, tidak seperti Windows, menggunakan realisasi perangkat lunak untuk OpenGL ketika ada masalah dengan perangkat keras OpenGL, tetapi tentu saja lebih lambat dari perangkat keras.

@ Algrin6 alangkah baiknya jika mesin dapat memberikan transparansi tentang fakta itu. Di masa lalu, game seperti Baldur's Gate dikirimkan dengan binari uji grafis. 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.
...

Memori 2 MB! Dan sekarang saya memiliki 3 GB + 3 GHz dan tidak dapat menjalankan mesin game. Bagaimana bisa?

Memori 2 MB! Dan sekarang saya memiliki 3 GB + 3 GHz dan tidak dapat menjalankan mesin game. Bagaimana bisa?

Karena kita berada di tahun 2016 dan mesin Bioware sangat tua? Dan tes ini dirancang untuk memeriksa apakah driver grafis cukup kuat, jadi kemungkinan tes _working_ dimulai dengan DirectX 3.01a, tetapi mungkin mengatakan "tingkatkan perangkat keras atau driver Anda" jika Anda berada di bawah DirectX 7 atau semacamnya. Dan mesin Bioware hanya bekerja pada MS Windows <= XP, sementara Godot bekerja pada selusin platform ...

Sekarang karena Anda tampaknya tahu persis apa yang perlu kami lakukan, silakan buat permintaan tarik.

@techtonik Masalah utama tentang ini adalah bahwa tidak ada pengembang inti yang memiliki perangkat keras lama untuk menguji masalah tersebut. Jadi, Anda harus memberikan info debug untuk menentukan penyebab masalah atau memperbaikinya sendiri (yang merupakan keindahan open source).

Gerbang Baldur tidak diprogram dalam mesin game 2D / 3D tujuan umum.
Ini dirancang khusus diprogram dalam C, assembler x86, kemungkinan Watcom
compiler, mode terlindungi dan menggunakan mesin stack dasar untuk pembuatan skrip. Juga
jangan ragu untuk melakukan semua kode blitting kustom sendiri.

Pada hari Minggu, 7 Feb 2016 pukul 12:36, George Marques [email protected]
menulis:

@techtonik https://github.com/techtonik masalah utama tentang ini adalah
bahwa tidak ada pengembang inti yang memiliki perangkat keras lama untuk menguji masalah tersebut. Begitu
Anda juga harus memberikan info debug untuk menentukan penyebab masalah atau
perbaiki sendiri (yang merupakan keindahan open source).

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -181034018.

@reduz dapatkah Godot menghasilkan "tabel kompatibilitas platform" untuk kode yang dihasilkan oleh mesin (atau digunakan oleh editor) yang mencantumkan semua fitur yang saat ini digunakan game (blitting, partikel, objek 3D, ...)?

Jika itu tidak mungkin untuk saat ini, apakah ini setidaknya secara teknis mungkin?

Kasus penggunaan untuk validasi adalah untuk dapat menghasilkan game (pengujian) minimal yang dapat dijalankan pada perangkat blitting apa pun dan mengukur performanya.

@ Algrin6 Tidak ada gunanya memeriksa apakah hal itu didukung dalam versi OpenGL yang lebih lama. GPU ini memiliki driver yang memberi tahu OpenGL bahwa semuanya didukung, lalu beralih ke semacam penggantian perangkat lunak aneh yang lambat, macet, atau macet.

Saya lebih suka berpura-pura bahwa perangkat keras lama seperti itu tidak ada dan telah jatuh dari planet ini.

Saya pikir itu berarti "tambalan dipersilakan". Saya benar-benar ragu siapa pun akan menolak
dukungan yang dilakukan dengan baik untuk
platform yang lebih tua.

Pada Kamis, 11 Feb 2016 jam 3:41, Juan Linietsky [email protected]
menulis:

@ Algrin6 https://github.com/Algrin6 Tidak ada gunanya memeriksa apakah itu
hal-hal didukung di OpenGL versi lama. GPU ini memiliki driver
yang memberi tahu OpenGL bahwa semuanya didukung, lalu masuk ke semacam
fallback perangkat lunak aneh yang lambat, macet, atau macet.

Saya lebih suka berpura-pura bahwa perangkat keras lama seperti itu tidak ada dan telah jatuh
dari planet.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182658216.

Saya masih menunggu seseorang dengan chipset lama untuk berkontribusi lebih baik
deteksi perangkat keras yang tidak didukung. Saya tidak memiliki perangkat keras itu sejak saat itu
satu dekade, jadi tidak banyak yang bisa saya lakukan.

Pada Rabu, 10 Feb 2016 pukul 23.30, Sergey Lapin [email protected]
menulis:

Saya pikir itu berarti "tambalan dipersilakan". Saya benar-benar ragu siapa pun akan menolak
dukungan yang dilakukan dengan baik untuk
platform yang lebih tua.

Pada Kamis, 11 Feb 2016 jam 3:41, Juan Linietsky [email protected]
menulis:

@ Algrin6 https://github.com/Algrin6 Tidak ada gunanya memeriksa apakah itu
hal-hal didukung di OpenGL versi lama. GPU ini memiliki driver
yang memberi tahu OpenGL bahwa semuanya didukung, lalu masuk ke semacam
fallback perangkat lunak aneh yang lambat, macet, atau macet.

Saya lebih suka berpura-pura bahwa perangkat keras lama seperti itu tidak ada dan telah jatuh
dari planet.

-
Balas email ini secara langsung atau lihat di GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -182658216
.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182676389.

Saya memiliki akses ke penyimpanan dengan PC dari tahun 80-an hingga awal 2000, jika itu akan membantu,
tetapi saya memerlukan beberapa detail tentang cara menguji dan men-debug karena saya tidak
pengembang windows dengan cara apa pun dan tidak memiliki ide tentang alat, dll.
Memiliki satu set i740s dengan kotak win95se2, beberapa bahkan Pentim233MMX.
Karena akuntansi, ini tidak akan dibuang hingga tahun 2025.

btw, Juan bisakah kamu menghubungi saya melalui email jadi saya punya alamat pribadi kamu?
Tidak akan membombardirnya dengan hal bodoh.

Pada Kamis, 11 Feb 2016 jam 5:48, Juan Linietsky [email protected]
menulis:

Saya masih menunggu seseorang dengan chipset lama untuk berkontribusi lebih baik
deteksi perangkat keras yang tidak didukung. Saya tidak memiliki perangkat keras itu sejak saat itu
satu dekade, jadi tidak banyak yang bisa saya lakukan.

Pada Rabu, 10 Feb 2016 pukul 23.30, Sergey Lapin [email protected]
menulis:

Saya pikir itu berarti "patch dipersilahkan". Saya benar-benar ragu siapa pun akan melakukannya
menolak
dukungan yang dilakukan dengan baik untuk
platform yang lebih tua.

Pada Kamis, 11 Feb 2016 jam 3:41, Juan Linietsky <
[email protected]>
menulis:

@ Algrin6 https://github.com/Algrin6 Tidak ada gunanya memeriksa apakah itu
hal-hal didukung di OpenGL versi lama. GPU ini memiliki driver
yang memberi tahu OpenGL bahwa semuanya didukung, lalu masuk ke semacam
dari
fallback perangkat lunak aneh yang lambat, macet, atau macet.

Saya lebih suka berpura-pura bahwa perangkat keras lama seperti itu tidak ada dan tidak ada
jatuh
dari planet.

-
Balas email ini secara langsung atau lihat di GitHub
<
https://github.com/godotengine/godot/issues/1162#issuecomment -182658216
.

-
Balas email ini secara langsung atau lihat di GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -182676389
.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182678470.

Anda tidak perlu melangkah lebih jauh ke belakang. Hanya intel Series 3/4 atau i940 saja
cukup untuk membuatnya crash ...
Cukup kompilasi dengan mingw / msvc dan coba cari tahu mengapa malah macet
menampilkan MessageBox bahwa perangkat keras tidak didukung

Pada hari Kamis, 11 Feb 2016 jam 12.00, Sergey Lapin [email protected]
menulis:

Saya memiliki akses ke penyimpanan dengan PC dari tahun 80-an hingga awal 2000, jika itu akan membantu,
tetapi saya memerlukan beberapa detail tentang cara menguji dan men-debug karena saya tidak
pengembang windows dengan cara apa pun dan tidak memiliki ide tentang alat, dll.
Memiliki satu set i740s dengan kotak win95se2, beberapa bahkan Pentim233MMX.
Karena akuntansi, ini tidak akan dibuang hingga tahun 2025.

btw, Juan bisakah kamu menghubungi saya melalui email jadi saya punya alamat pribadi kamu?
Tidak akan membombardirnya dengan hal bodoh.

Pada Kamis, 11 Feb 2016 jam 5:48, Juan Linietsky [email protected]

menulis:

Saya masih menunggu seseorang dengan chipset lama untuk berkontribusi lebih baik
deteksi perangkat keras yang tidak didukung. Saya tidak memiliki perangkat keras itu
sejak
satu dekade, jadi tidak banyak yang bisa saya lakukan.

Pada Rabu, 10 Feb 2016 pukul 23.30, Sergey Lapin < [email protected]

menulis:

Saya pikir itu berarti "patch dipersilahkan". Saya benar-benar ragu siapa pun akan melakukannya
menolak
dukungan yang dilakukan dengan baik untuk
platform yang lebih tua.

Pada Kamis, 11 Feb 2016 jam 3:41, Juan Linietsky <
[email protected]>
menulis:

@ Algrin6 https://github.com/Algrin6 Tidak ada gunanya memeriksa apakah
bahwa
hal-hal didukung di OpenGL versi lama. GPU ini memiliki
pengemudi
yang memberi tahu OpenGL bahwa semuanya didukung, lalu masuk ke semacam
dari
fallback perangkat lunak aneh yang lambat, macet, atau macet.

Saya lebih suka berpura-pura bahwa perangkat keras lama seperti itu tidak ada dan tidak ada
jatuh
dari planet.

-
Balas email ini secara langsung atau lihat di GitHub
<
https://github.com/godotengine/godot/issues/1162#issuecomment -182658216
.

-
Balas email ini secara langsung atau lihat di GitHub
<
https://github.com/godotengine/godot/issues/1162#issuecomment -182676389
.

-
Balas email ini secara langsung atau lihat di GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -182678470
.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -182679526.

Godot.windows.tools.32.exe yang dikompilasi dengan MinGW. Gangguan. Apa selanjutnya?

Satu-satunya hal yang dapat saya pikirkan adalah Anda perlu men-debug crash. Indo
mulai dengan fungsi main () dan cetak setiap nama fungsi
itu berjalan sampai yang rusak ditemukan, lalu tambahkan pencetakan ke
setiap baris berfungsi untuk menemukan baris yang tepat di mana itu
crash dan melaporkan kembali hasilnya. Juga jika dikompilasi oleh mingw seperti yang Anda dapatkan
alamat kecelakaan yang dapat Anda gunakan
addr2line -e / path / ke / debug / exe 0x

untuk mengetahui nomor baris.
Informasi ini akan sangat membantu,
tetapi itu tidak berarti debug selesai di sini, tetapi itu akan menjadi masalah besar
maju.

Pada hari Kamis, 11 Feb 2016 jam 23.46, anatoly techtonik <
[email protected]> menulis:

Godot.windows.tools.32.exe yang dikompilasi dengan MinGW. Gangguan. Apa selanjutnya?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183054269.

Sebenarnya, MinGW tampaknya dikirimkan dengan 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)

Menurut jejak di atas, itu macet di baris:

...
    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

Jadi apa selanjutnya?

keluaran 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

Fungsinya adalah NULL karena driver tidak menyediakannya, itulah sebabnya
crash.

Pada 12 Februari 2016 pukul 01:21, anatoly techtonik [email protected]
menulis:

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

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183174112.

@ punto- di mana Anda melihat bahwa itu adalah NULL?

di bagian atas lacak belakang, bingkai 0, alamat jika 0x00000, begitulah
terlihat seperti saat Anda memanggil penunjuk fungsi yang bernilai null

Pada 12 Februari 2016 pukul 06:58, anatoly techtonik [email protected]
menulis:

@ punto- https://github.com/punto- di mana Anda melihat bahwa itu adalah NULL?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183257600.

Tetapi saya tidak mendapatkan - C ++ bukan Python, jadi ketika godot biner memuat, sistem harus memuat driver dll dan gagal dengan peringatan bahwa simbol yang diberikan tidak ada. Mengapa itu tidak terjadi?

Atau apakah itu berarti bahwa Godot benar-benar mengimplementasikan penautan run-time dinamis, tetapi tidak memperingatkan tentang simbol yang hilang?

glew melakukan penautan run time, itulah mengapa fungsinya ada tetapi bisa
terkadang menjadi nol ..

Pada 12 Februari 2016 pukul 13:41, anatoly techtonik [email protected]
menulis:

Atau apakah itu berarti bahwa Godot benar-benar mengimplementasikan penautan run-time dinamis,
tetapi tidak memperingatkan tentang simbol yang hilang?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183401773.

@ punto- ini sepertinya tidak benar. Dapatkah GLEW ini menyuntikkan rintisan Anda sendiri untuk fungsi NULL ini yang mengeluh dengan kesalahan alih-alih segfault?

Aku tidak tahu .. mungkin .. itu ide yang bagus

Pada 12 Februari 2016 pukul 15:01, anatoly techtonik [email protected]
menulis:

@ punto- https://github.com/punto- ini sepertinya tidak benar. Bisakah ini
GLEW menyuntikkan stub Anda sendiri untuk fungsi NULL yang dikeluhkan ini
kesalahan bukannya segfaulting?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183431329.

C ++ bukan python, tapi python adalah C :) glew mungkin mencari simbolnya
dan jika tidak ada, NULL akan diberikan ke penunjuk fungsi. saya
tidak ingat semua detailnya, tapi begitulah yang selalu macet,
fungsi apa pun dari gl adalah NULL ..

Pada 12 Februari 2016 pukul 13:40, anatoly techtonik [email protected]
menulis:

Tapi saya tidak mengerti - C ++ bukan Python, jadi ketika biner godot dimuat, file
Sistem harus memuat dll driver dan gagal dengan peringatan bahwa simbol yang diberikan adalah
tidak hadir. Mengapa itu tidak terjadi?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183401442.

Adakah yang bisa menggunakan salah satu dari kartu Intel ini mencoba membangun ini?

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

Pada 12 Februari 2016 pukul 15:45, Ariel Manzur [email protected] menulis:

C ++ bukan python, tapi python adalah C :) glew mungkin mencari simbolnya
dan jika tidak ada, NULL akan diberikan ke penunjuk fungsi. saya
tidak ingat semua detailnya, tapi begitulah yang selalu macet,
fungsi apa pun dari gl adalah NULL ..

Pada 12 Februari 2016 pukul 13:40, anatoly techtonik [email protected]
menulis:

Tapi saya tidak mengerti - C ++ bukan Python, jadi ketika biner godot dimuat, file
Sistem harus memuat dll driver dan gagal dengan peringatan bahwa simbol yang diberikan adalah
tidak hadir. Mengapa itu tidak terjadi?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183401442
.

image

lihat 32

Ini 32 bit .. mungkinkah windows hanya menerima 64 bit?

Pada 14 Februari 2016 pukul 01:29, anatoly techtonik [email protected]
menulis:

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

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183819635.

Penjelajah ketergantungan menunjukkan bahwa ini adalah modul 64-bit yang ditautkan ke lib 32-bit.

Apakah tertulis yang mana?

Pada 14 Februari 2016 pukul 01:38, anatoly techtonik [email protected]
menulis:

Penjelajah ketergantungan menunjukkan bahwa ini adalah modul 64-bit yang ditautkan ke lib 32-bit.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237.

(juga mengapa ini berfungsi di komputer saya? apakah itu cpu 32 bit?)

Pada 14 Februari 2016 pukul 01:52, Ariel Manzur [email protected] menulis:

Apakah tertulis yang mana?

Pada 14 Februari 2016 pukul 01:38, anatoly techtonik [email protected]
menulis:

Penjelajah ketergantungan menunjukkan bahwa ini adalah modul 64-bit yang ditautkan ke lib 32-bit.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237
.

Bisakah kamu mencoba yang ini?

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

Pada 14 Februari 2016 pukul 01:54, Ariel Manzur [email protected] menulis:

(juga mengapa ini berfungsi di komputer saya? apakah itu cpu 32 bit?)

Pada 14 Februari 2016 pukul 01:52, Ariel Manzur [email protected] menulis:

Apakah tertulis yang mana?

Pada 14 Februari 2016 pukul 01:38, anatoly techtonik < [email protected]

menulis:

Penjelajah ketergantungan menunjukkan bahwa ini adalah modul 64-bit yang ditautkan ke lib 32-bit.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183820237
.

Di laptop lama saya (intel gma x3100) itu tidak macet, tetapi jendelanya tetap abu-abu dengan kesalahan berikut:

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

Mungkinkah versi shader terlalu lama?
Tapi anehnya mencoba yang D3D bukan GLSL ...

Pada hari Minggu, 14 Feb 2016 pukul 09:03, Hondres [email protected] menulis:

Di laptop lama saya (intel gma x3100) tidak macet, tetapi jendelanya tetap ada
abu-abu dengan kesalahan berikut:

GALAT: ShaderGLES2 :: get_current_version: CanvasShaderGLES2: TAUTAN Program GAGAL:
Gagal membuat shader D3D.
Di: drivers \ gles2 \ shader_gles2. cpp: 544
ERROR: ShaderGLES2 :: get_current_version: Metode / Fungsi Gagal, mengembalikan: 0
Di: drivers \ gles2 \ shader_gles2. cpp: 551
EROR: ShaderGLES2 :: bind: Kondisi '! Version' benar. kembali: salah
Di: drivers \ gles2 \ shader_gles2. cpp: 126
EROR: ShaderGLES2 :: _ get_uniform: Kondisi '! Version' benar. kembali: -1
Di:. \ Drivers / gles2 / shader_gles2.h: 354

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183827627.

Jadi, adakah kasus di mana grafik bekerja menggunakan angle dan bukan gl secara langsung?

Pada 14 Februari 2016 pukul 03:25, Sergey Lapin [email protected] menulis:

Mungkinkah versi shader terlalu lama?
Tapi anehnya mencoba yang D3D bukan GLSL ...

Pada hari Minggu, 14 Feb 2016 pukul 09:03, Hondres [email protected] menulis:

Di laptop lama saya (intel gma x3100) tidak macet, tetapi jendelanya tetap ada
abu-abu dengan kesalahan berikut:

GALAT: ShaderGLES2 :: get_current_version: CanvasShaderGLES2: Tautan Program
GAGAL:
Gagal membuat shader D3D.
Di: drivers \ gles2 \ shader_gles2. cpp: 544
EROR: ShaderGLES2 :: get_current_version: Metode / Fungsi Gagal,
kembali: 0
Di: drivers \ gles2 \ shader_gles2. cpp: 551
EROR: ShaderGLES2 :: bind: Kondisi '! Version' benar. kembali: salah
Di: drivers \ gles2 \ shader_gles2. cpp: 126
EROR: ShaderGLES2 :: _ get_uniform: Kondisi '! Version' benar.
kembali: -1
Di:. \ Drivers / gles2 / shader_gles2.h: 354

-
Balas email ini secara langsung atau lihat di GitHub
< https://github.com/godotengine/godot/issues/1162#issuecomment -183827627
.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183830014.

@ punto- tools melaporkan bahwa godot.windows.tools.angle.32.exe bukan PE yang dapat dieksekusi. Bisakah Anda memposting versi yang tidak tersentuh oleh UPX?

IMAGE_OPTIONAL_HEADER.Magic-nya sama dengan IMAGE_NT_OPTIONAL_HDR64_MAGIC yang salah https://msdn.microsoft.com/en-us/library/windows/desktop/ms680339%28v=vs.85%29.aspx

ok coba ini:

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

itu tidak dikompresi oleh upx

Pada 14 Februari 2016 pukul 05:10, anatoly techtonik [email protected]
menulis:

@ punto- https://github.com/punto- IMAGE_OPTIONAL_HEADER nya. Sihir adalah
sama dengan IMAGE_NT_OPTIONAL_HDR64_MAGIC yang salah
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680339%28v=vs.85%29.aspx

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -183846301.

Masih masalah yang sama. depends menganggapnya biner 64-bit, dan bukan hanya 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

Ini adalah utilitas unix, btw.

@Hinsbart Bisakah Anda mencoba http://tof.p1x.in/html5/ ini di komputer di mana Anda mendapatkan layar abu-abu dan kesalahan itu? seharusnya chrome menggunakan kode yang sama untuk perendernya ..

@ Techtonik mungkin saya mengalami bug di mana saya menggunakan bits = 32 dan saya benar-benar mendapatkan biner 64 bit?

@ punto- Saya tidak tahu bagaimana Anda mengkompilasinya atau bug apa yang dimaksud. Perintah dan build log dapat memperjelasnya. Saya dapat mengkompilasinya sendiri jika Anda siap untuk mengkomit perubahan Anda ke beberapa cabang.

ya saya di atasnya

ini dia https://github.com/punto-/godot/tree/angle

Pada 15 Februari 2016 pukul 14:53, anatoly techtonik [email protected]
menulis:

@ punto- https://github.com/punto- Saya tidak tahu bagaimana Anda menyusunnya atau
bug apa yang dimaksud. Perintah dan build log dapat memperjelasnya. saya bisa
kompilasi sendiri jika Anda siap untuk mengkomit perubahan Anda ke beberapa cabang.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184323695.

Kompilasi dengan angle = yes

Pada 15 Februari 2016 pukul 15:25, Ariel Manzur [email protected] menulis:

ini dia https://github.com/punto-/godot/tree/angle

Pada 15 Februari 2016 pukul 14:53, anatoly techtonik [email protected]
menulis:

@ punto- https://github.com/punto- Saya tidak tahu bagaimana Anda menyusunnya
atau bug apa yang dimaksud. Perintah dan build log dapat memperjelasnya. saya
dapat mengkompilasinya sendiri jika Anda siap untuk memasukkan perubahan Anda ke beberapa
cabang.

-
Balas email ini secara langsung atau lihat di 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.

Tidak beruntung.

coba juga dengan theora_opt = no

Pada 15 Februari 2016 pukul 18:40, anatoly techtonik [email protected]
menulis:

scons: *** [drivers \ theora \ theora \ x86 \ mmxencfrag.windows.tools.32.o] Sumber drivers\theora\theora\x86\mmxencfrag.c' not found, needed by target drivers \ theora \ theora \ x86 \ mmxencfrag.windows.tools.32.o '.
scons: bangunan dihentikan karena kesalahan.

Tidak beruntung.

-
Balas email ini secara langsung atau lihat di 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>
                            ^

Titik?

Nah itulah titik sudutnya, ia menggunakan 3d langsung, bukan opengl: p

Pada 15 Februari 2016 pukul 18:57, anatoly techtonik [email protected]
menulis:

Dalam file disertakan dari driver \ angle / common / angleutils.h: 12: 0,
dari driver \ angle \ common \ angleutils. cpp: 7 :
drivers \ angle / common / platform.h: 62: 28: kesalahan fatal: d3d11_1.h: Tidak ada file atau direktori seperti itu
# termasuk
^

Titik?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184411949.

ANGLE memiliki dua backend - yang lebih lama menggunakan DirectX 9. Saya sedang mendownload MinGW yang lebih baru dengan header DirectX 11 sekarang.

konteksnya dibuat di platform / windows / gl_context_egl_angle.cpp, I
pikir ada parameter di sana untuk memilih backend .. Saya rasa
Masalahnya ada di file itu, mungkin ada cara untuk mendeteksi parameter apa
terbaik untuk sistem ..

Pada 16 Februari 2016 pukul 05:51, anatoly techtonik [email protected]
menulis:

ANGLE memiliki dua backend - yang lebih lama menggunakan DirectX 9. Saya mendownload yang lebih baru
MinGW dengan header DirectX 11 sekarang.

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -184580963.

Banyak kesalahan dengan gcc 5.3.0 yang lebih baru, misalnya:

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;
                     ^
...

Anda perlu menambahkan -std=c++11 ke C ++ flag.
mis. tambahkan baris ini setelah: https://github.com/punto-/godot/blob/angle/drivers/angle/SCsub#L276

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

Tidak yakin apakah sintaks akan berfungsi untuk MSVC, tetapi dengan MinGW seharusnya baik-baik saja.

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

Perlu menunggu rilis MinGW baru .

Mungkin diskusi tentang ANGLE harus dipindahkan ke masalah terpisah, dengan mempertahankan masalah ini untuk "memberi tahu pengguna bahwa perangkat kerasnya sudah tua dan tidak didukung sebelum mogok"?

ya saya setuju

Pada 17 Februari 2016 pukul 13:25, Rémi Verschelde [email protected]
menulis:

Mungkin diskusi tentang ANGLE harus dipindahkan ke masalah lain,
menyimpan yang satu ini untuk "memberi tahu pengguna bahwa perangkat keras mereka sudah tua dan
tidak didukung sebelum mogok "?

-
Balas email ini secara langsung atau lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -185282158.

3634 adalah masalah ANGLE. # 3694 adalah PR untuk mendapatkan lebih banyak informasi saat memuat mesin.

@ Heyby

Mengapa Godot bekerja secara ajaib di Ubuntu tetapi tidak di Windows?

Iya! Saya ingin tahu alasannya juga. Ini berfungsi ketika saya menguji dengan Xubuntu tetapi tidak pada edisi Windows mana pun.

^^

Ini bukan tentang OS, ini tentang driver. Secara umum, driver GL diabaikan di Windows dibandingkan dengan Linux, berkat Direct3D. Banyak GPU lama berakhir dengan implementasi GL 1.5 minimal pada versi Windows yang lebih baru.

@solusiholcim

Banyak GPU lama berakhir dengan implementasi GL 1.5 minimal pada versi Windows yang lebih baru.

Jadi kapan versi OpenGL sebelumnya akan didukung di Godot? Apakah ada kebutuhan eksplisit mutlak untuk mengandalkan 2.0+? Ini tidak seperti kompatibilitas ke belakang tidak ada, jadi perangkat yang lebih mampu tidak akan gagal dalam merender iterasi OpenGL sebelumnya. Apakah ada fitur editor visual itu sendiri yang dibuat dengan GLES2 yang tidak dapat diperkecil untuk menggunakan GL1.4 sebagai pengganti? Maksud saya, sebagian besar fitur GL yang lebih baru adalah untuk rendering 3D, yang tidak diperlukan jika datang dari perspektif niat untuk membuat game 2D dengan Godot.

@WinEX Itu tidak akan terjadi. Kompatibel dengan GL 1.4 berarti melepaskan banyak fitur menarik yang digunakan untuk 2D dan 3D; dan di ujung lain spektrum, kami memiliki orang-orang yang tidak sabar menunggu dukungan GL 3+ atau bahkan Vulkan. Anda dapat dengan aman menganggap Godot sebagai mesin GL 2.1+; jika bukan itu yang Anda inginkan, ada banyak mesin lain yang mungkin memiliki batasan GL lebih rendah (misalnya OGRE 1.9, atau SDL 2.0).

Topiknya di sini adalah bahwa Godot harus memberikan kesalahan yang tepat ketika fitur GL 2.1+ yang diperlukan tidak tersedia dan bukannya mogok; tidak ada maksud untuk menulis ulang perender GLES1. Bagi pengguna Windows, mungkin ada harapan jika ANGLE terintegrasi untuk emulasi GL melalui Direct3D, tetapi tidak akan ada penurunan versi perender GLES2.

Kembali ke topik: @reduz , saya pikir mungkin saja crash tersebut dapat direproduksi bahkan pada perangkat keras berkemampuan GL 2.1 dengan mencoba memuat Godot di mesin virtual tanpa akselerasi 2D dan 3D. Saya akan mencobanya secepatnya untuk mengonfirmasi, tetapi itu mungkin membantu mencari tahu di mana ia macet, dan cara menalangi dengan benar dengan pesan kesalahan yang dapat dibaca manusia alih-alih segfaulting.

Saya pikir mungkin saja dapat mereproduksi crash bahkan pada perangkat keras berkemampuan GL 2.1 dengan mencoba memuat Godot di mesin virtual tanpa akselerasi 2D dan 3D. Saya akan mencobanya secepatnya untuk mengonfirmasi

Baiklah, sepertinya dengan VirtualBox 5 itu tidak mudah karena sekarang memiliki driver GL yang layak yang mendukung hingga OpenGL 3.0 xD.

opengl 3.0 lebih mudah dideteksi, karena Anda harus meminta konteks khusus
(Saya berharap)

Pada hari Sen, 25 Juli 2016 pukul 12.28, Rémi Verschelde [email protected]
menulis:

Saya pikir mungkin bisa mereproduksi kecelakaan itu bahkan di GL 2.1
perangkat keras yang mampu dengan mencoba memuat Godot di mesin virtual tanpa 2D
dan akselerasi 3D. Saya akan mencobanya secepatnya untuk mengonfirmasi

Baiklah, sepertinya dengan VirtualBox 5 itu tidak mudah karena sekarang sudah layak
GL driver yang mendukung hingga OpenGL 3.0 xD.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/godotengine/godot/issues/1162#issuecomment -234987968,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AF-Z2_MK5iQA0RxLwv0FHu6po8ucVE8kks5qZNYlgaJpZM4DQoN3
.

Saya baru saja menguji netbook lama saya dengan intel igp jelek yang tidak kompatibel, di bawah Windows.

Pada baris 10791 dari rasterizer_gles2.cpp , ke dalam RasterizerGLES2::init() saya telah menambahkan beberapa baris ini:

    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 masih macet, tetapi ini menampilkan pesan kesalahan ini ke konsol sebelum pingsan.

Saya tidak tahu bagaimana memberi tahu Godot untuk membatalkan inisialisasi rasterizer (RasterizerGLES2 :: init () tidak mengembalikan true / false, itu seperti jika tidak ada pilihan selain sukses atau macet), saya juga tidak tahu bagaimana memberi tahu Godot untuk berhenti tepat.

Bahkan jika uji kompatibilitas ini mungkin tidak 100% dapat diandalkan, setidaknya dapat mengurangi jumlah crash diam, dan menampilkan kotak dialog sistem kecil yang memperingatkan pengguna bahwa itu akan crash dan mengapa.

Temukan luar biasa @SuperUserNameMan. Saya bermain-main dengannya sedikit dan saya mengonfirmasi bahwa itu berfungsi (setidaknya dalam pengujian saya di mana saya memeriksa if (glewIsSupported("GL_VERSION_2_1")) karena GPU saya mendukungnya). Kita dapat menggunakan OS::alert() untuk menampilkan kotak pesan pemblokiran.

Seperti yang Anda sebutkan, satu-satunya bagian yang hilang (dan yang paling sulit) adalah membiarkan Godot keluar dengan benar. Saya telah melihat sekilas tetapi keahlian saya telah melampaui kemampuan saya untuk membuat Godot berhenti di tengah inisialisasi OS-nya.

Berikut perbedaan bukti konsep:

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



Untuk dapat menguji orang-orang dengan dukungan GL 2.1, cukup hapus ! di if test.

Ini memunculkan kotak pesan (pemblokiran) ini di X11:
spectacle w30011

Setelah berdiskusi dengan @reduz , ternyata patch saya di atas sudah cukup baik sebagai langkah awal; karena peringatan OS memblokir, kami dapat memberi tahu orang-orang tentang masalah ini dan memperingatkan mereka bahwa Godot akan macet :) Keluar dengan bersih tentu saja lebih baik, tetapi solusi perantara ini sudah bagus untuk dimiliki.

untuk menguji di bawah linux tanpa mengubah kode dan mengkompilasi ulang, saya pikir Anda dapat mengatur variabel lingkungan MESA_GL_VERSION_OVERRIDE menjadi 2.0: http://www.mesa3d.org/envvars.html

IIRC, itu juga cara melanjutkan untuk memaksa MESA mengizinkan GPU yang terdaftar hitam untuk bekerja dengan Godot.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat