Proses debug OpenGL ES 2.0 [ditutup]

Jadi, saya punya aplikasi OpenGL ES 2.0. Ini dikompilasi dan dijalankan di simulator iPhone/iPad, di iPhone/iPad asli, dan di Windows menggunakan pustaka emulator Imgtec (yaitu PVRVframe).

Dalam aplikasi tersebut, saya memiliki satu panggilan gambar tertentu yang menghasilkan tidak ada piksel yang ditulis ke target, meskipun semua status yang dapat saya tanyakan terlihat masuk akal (viewport, uji kedalaman/uji stensil/cull/blend off, framebuffer selesai, dll), dan AFAICT Saya mengirimkan data titik yang masuk akal.

Apa yang saya cari saat ini adalah alat seperti Pix / GPAD yang memungkinkan saya menelusuri adegan dan meninjau keadaan. Saya tidak dapat langsung melakukan kueri dari OpenGL pada saat itu dari panggilan draw yang dimaksud (misalnya konten buffer vertex/indeks aktual).

Baik PVRTrace maupun instrumen OSX tampaknya tidak menangkap status yang cukup untuk melakukan debug pada masalah seperti ini. Secara khusus, mereka tidak menangkap buffer vertex/indeks atau data tekstur (instrumen OSX juga tidak menangkap sumber shader).

gDEBugger, yang sebelumnya merupakan jawaban atas pertanyaan semacam ini di Stack Overflow, kini ada di versi 5.8 - sudah gratis, dan itu bagus, tetapi tidak lagi mendukung OpenGL ES 2 (di Windows, tidak ada ES2 yang dapat dirender config tersedia melalui EGL; di bawah OSX, tidak ada cara untuk melampirkan debugger ke aplikasi yang berjalan baik di simulator atau di perangkat sebenarnya) - yang tidak begitu bagus.

Apakah saya melewatkan sesuatu yang jelas? Apa saja pilihan saya? Bagaimana cara orang lain men-debug adegan mereka?


person moonshadow    schedule 25.03.2011    source sumber
comment
Sebagai catatan, sekarang saya telah menyelesaikan masalah yang saya alami; itu memang berarti tidak ditangkap oleh alat apa pun yang disebutkan di atas atau dapat ditanyakan melalui OpenGL. Butuh satu pagi untuk melacaknya; masalahnya akan terlihat jelas dalam sekejap jika saya memiliki state dump yang lengkap. Jadi saya masih ingin jawabannya, untuk lain kali :)   -  person moonshadow    schedule 25.03.2011
comment
...sudah seminggu, dan waktu berikutnya telah tiba. Tentunya alat yang masuk akal pasti ada di suatu tempat, bukan? Benar?   -  person moonshadow    schedule 01.04.2011


Jawaban (3)


Itu dimungkinkan di Xcode sejak versi 4.2, c.f. https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_2.html#//apple_ref/doc/uid/00200-SW5

person Alexis Pribula    schedule 09.03.2012
comment
Fasilitas bingkai pengambilan Xcode sekarang cukup matang untuk men-debug hampir semua masalah. Kami menemukan bahwa kami tidak dapat menggunakannya pada perangkat era iPad1 untuk frame yang rumit karena perangkat kehabisan memori, namun hal tersebut tentu saja bukan masalah yang tidak dapat diatasi. Catatan Anda harus memastikan bahwa ruang kerja Xcode menyertakan kerangka OpenGL ES, bahkan jika Anda memiliki beberapa proses eksternal yang benar-benar membuat build Anda (kami menggunakan Jam), jika tidak, fasilitas pengambilan bingkai akan dinonaktifkan tanpa penjelasan - semoga ini akan menyelamatkan orang lain beberapa waktu :) - person moonshadow; 07.09.2012

Ada beberapa alat debugging OpenGL ES 1.1/2.0 dari vendor GPU. Hampir semua alat ini memerlukan perangkat nyata, tetapi Imagination Technologies menyediakan perpustakaan emulasi dan alat penelusuran yang Anda gunakan. Apakah Anda menggunakan PVRTrace dengan PVRVFrame?

  • PowerVR (Imagination Technologies)
    • PVRVFrame is an emulation libraries for OpenGL ES 1.1/2.0 on OpenGL. And GL calls can be traced by PVRTrace with GUI.
    • PVRTrace juga dapat terhubung dengan perangkat Linux ARMv7.
  • Adreno (Qualcomm)
  • Tegra (NVIDIA)
    • PerfHUD ES has Frame Debugger as Adreno profiler. It require Tegra Development Kit.
  • Mali (ARM)

(Saya yakin gDEBugger 5.7 adalah alat terbaik untuk melakukan debug OpenGL ES 1.1/2.0. Namun sudah tidak tersedia lagi...)

person Kazuki Sakamoto    schedule 05.04.2011
comment
Saya telah melihat PVRTrace, seperti yang saya jelaskan di pertanyaan saya. Itu tidak menangkap tekstur atau konten buffer vertex/indeks (atau mungkin tidak dapat menampilkannya), dan (yang kurang penting) tidak menyediakan cara untuk menelusuri bingkai dan menampilkan hasil panggilan undian tertentu, seperti debugger dewasa seperti Pix dan GPAD melakukannya. Selain itu, saya telah mengamati keadaan yang ditampilkan di penampil keadaannya tidak setuju dengan yang dilaporkan ke kode oleh glGet() untuk panggilan tertentu, dan hasil di layar menyiratkan bahwa PVRTrace-lah yang salah. Hal ini menyebabkan penggunaannya terbatas. Saya tidak memiliki akses ke perangkat Adreno atau Mali. - person moonshadow; 05.04.2011
comment
Profiler Adreno sangat bagus untuk pembuatan profil, tetapi seperti halnya PVRTrace, profiler Adreno tidak menangkap status yang cukup untuk proses debug. - person moonshadow; 15.09.2011

Saya menemukan bahwa gDebugger 5.7 untuk Windows IS masih tersedia di sini:

http://files.gremedy.com/downloads/gDEBugger-5_7.msi

Saya memodifikasi URL ini dari yang ditemukan di bagian atas halaman unduhan ini: view-source:http://www.gremedy.com/downloading.php?platform=windows32

Dimungkinkan untuk mengakses versi yang sama untuk platform lain melalui trik yang sama.

File lisensi lama tersedia di sini: http://www.geeks3d.com/20101207/3d-programming-gdebugger-advanced-opengl-debugger-now-free/

Namun masa berlakunya sudah habis pada tanggal 31 Januari 2011.

person XenonofArcticus    schedule 02.01.2012
comment
Rilis terbaru gDEBugger, 5.8.1, tidak lagi memerlukan lisensi: gremedy.com/download.php - person Nathan Monteleone; 14.12.2012
comment
Tautan gDebugger 5.8.1 yang berfungsi untuk Windows: yun.baidu.com/s/1jGMeSCm - person Joseph; 06.04.2017