Dimulai dengan OpenGL ketika sebagian besar tutorial kedaluwarsa [ditutup]

16

Saya yakin sudah ada banyak pertanyaan seperti ini, tetapi pembaruan terus-menerus dari perpustakaan OpenGL membuang semuanya, dan dalam satu atau dua bulan, jawaban di sini tidak akan berguna lagi.

Saya siap memulai pemrograman dalam OpenGL menggunakan C ++. Saya punya kompiler yang berfungsi (DevCpp; JANGAN meminta saya untuk beralih ke VC ++, dan jangan tanya kenapa). Sekarang saya hanya mencari tutorial yang solid tentang cara memprogram dengan OpenGL. Asisten saya menemukan tutorial yang disediakan oleh NeHe Productions, tetapi ketika saya datang untuk mencari tahu, itu WAY OUT DATE! (walaupun saya memang menarik bersama jendela dasar untuk mendukung kanvas OpenGL)

Lalu saya online, dan menemukan OpenGL SuperBible, yang ternyata menggunakan freeglut? Tapi yang ingin saya ketahui adalah apakah SuperBible 5th edition sudah diperbarui atau tidak. Saran untuk freeglut saya temukan mengatakan versi terbaru adalah 2.6.0 tapi sekarang 2.8.0!

  • Apakah OpenGL SuperBible masih merupakan tempat yang baik, dan cukup baru untuk memulai?
  • Apakah ada tempat yang lebih baik untuk belajar OpenGL?
  • Apakah saya diperbolehkan menyimpan freeglut di direktori sertakan DevCpp (mungkin di GL), atau adakah prosedur yang penting?
  • Apakah ada komentar atau saran yang saya pikir tidak akan bertanya karena saya baru saja mulai?

@dreta menjelaskan beberapa hal untuk saya, jadi sekarang saya punya ide yang lebih baik tentang apa yang harus ditanyakan:

Saya pikir saya ingin memulai dengan OpenGL menggunakan perpustakaan wrapper alih-alih langsung mengakses OpenGL.
Saya hanya berpikir bahwa, untuk seorang pemula, akan lebih mudah bagi saya untuk memprogram dan mendapatkan hasil yang baik, sementara saya belum harus memahami semua detail yang kotor (seperti yang disebutkan @stephelton).

Masalahnya adalah, saya tidak dapat menemukan perpustakaan yang tidak memiliki referensi yang tidak terdefinisi ke fungsi yang tidak lagi didukung. Freeglut terdengar operasional, tetapi masih menggunakan GLU.
Adakah yang tahu apa yang bisa saya lakukan?
Juga, saya mencoba mengkompilasi sumber SuperBible pertama, tetapi saya mendapat kesalahan karena GLAPI tidak didefinisikan sebagai tipe, kesalahan yang berasal dari pustaka GLU.

Saya ingin menggunakan SuperBible, tetapi saya tidak tahu bagaimana cara memperbaikinya.

Pembuat kode
sumber
2
Anda harus beralih ke GCC.
notlesh
DevCpp hanyalah sebuah IDE; yang menjalankan GCC (mungkin spesifik). Tetapi sejak disebutkan, Eclipse CDT akan lebih disukai, karena belum ditinggalkan selama 10 tahun terakhir.
Casper Beyer
4
@Casper Warisan warisan DevCpp adalah Code :: Blocks dan masih diperbarui secara teratur.
Alex Shepard
1
Jika Anda ingin perpustakaan pembungkus di sekitar OpenGL, saya sarankan Anda mencoba SFML . SFML menyediakan hal-hal biasa seperti pembuatan jendela, pengatur waktu, dll. Selain itu, Anda juga dapat menggambar teks dan bentuk sederhana. Anda bisa mati tenggelam menggunakan OpenGL "mentah" kapan pun Anda mau, mencampur fungsi SFML dan panggilan API mentah.
Oskar N.
1
Anda tidak dapat "menutup" pertanyaan dengan menambahkan "{TUTUP}" ke judul. Pertanyaan akan ditutup oleh moderator atau jika cukup banyak pengguna memilih untuk menutup pertanyaan. Saya akan memutar kembali suntingan Anda .. "DITUTUP" akan secara otomatis ditambahkan ke judul Anda jika moderator memutuskan untuk menutupnya ..
bummzack

Jawaban:

19

Penduduk kami, Nicol Bolas, mengelola buku online tentang pemrograman grafik modern . Ini menggunakan OpenGL modern, semuanya diperkenalkan dengan kecepatan yang mudah dikonsumsi, ini adalah tempat yang baik untuk memulai. Saya telah menggunakannya untuk mempelajari OpenGL modern dan ini membuat saya bertanya-tanya dalam 2 bulan terakhir.

Selain itu ada sedikit pengetahuan di sana-sini. Wiki OpenGL dipelihara dengan cukup baik. Kode ini bukan "praktik terbaik" dan kadang-kadang ada ambiguitas ketika datang ke versi OpenGL, tetapi di luar itu jarang terjadi, itu adalah sumber yang bagus.

Jika Anda ingin belajar tentang GLSL, ada Tutorial Inti GLSL dari lighthouse3D. Meskipun ini adalah satu-satunya pengetahuan inti yang saya "percayai" di situs, sisanya cenderung ketinggalan jaman.

Setelah Anda mulai memahami bagaimana OpenGL modern dilakukan, Anda akan memiliki waktu yang mudah mencari informasi tertentu, memfilter kode yang sudah ketinggalan zaman dan yang paling penting membaca spesifikasi. Anda hanya harus mulai dari suatu tempat.

Sebagian besar, jika tidak semua sebenarnya, dari buku-buku OpenGL yang tersedia sudah ketinggalan zaman. SuperBible baru adalah semacam aneh dan saya tidak akan merekomendasikan hal ini kepada siapa pun. Panduan Pemrograman OpenGL untuk OpenGL 4.1 keluar tanggal 16 September, sayangnya edisi ke-7 menggunakan kode usang, jadi Anda hanya harus menunggu, saya yakin begitu.

Dan tentu saja, Anda selalu dapat mengajukan pertanyaan di sini.

dreta
sumber
1
Mengapa Anda tidak menyarankan SuperBible?
Codesmith
3
@AUTO Edisi ke-5 dari SuperBible menggunakan pembungkus khusus di sekitar OpenGL untuk membuatnya "dapat diakses". Banyak contoh menggunakan pembungkus kustom berlebihan. Itu tidak mengajarkan Anda apa yang ditekankan, yang merupakan spesifikasi inti OpenGL. Cara saya melihatnya, jika Anda tidak secara eksplisit harus mempelajari OpenGL yang sudah usang, maka lupakan saja itu ada. Tidak ada gunanya mempelajarinya. Spesifikasi inti jauh lebih jelas dan kuat.
dreta
@AUTO Spesifikasi inti jauh lebih menuntut di awal, itu hal yang baik. Ini akan memaksa Anda untuk mengurus sebagian besar proses rendering, memberi Anda pemahaman dan kontrol penuh atas hal itu. Ini membuka banyak kemungkinan lebih banyak daripada kode yang sudah usang. Setelah itu jika Anda dapat mempelajari API OS Anda dan lanuch OpenGL di bawahnya tanpa hal-hal seperti kekenyangan maka Anda berada di wonderland.
dreta
OK, jadi izinkan saya mengajukan pertanyaan penting kepada Anda: perpustakaan GLU tampaknya sudah usang dan sama sekali tidak didukung; dengan menggunakan spesifikasi, apakah saya mendapatkan akses langsung, melewati kebutuhan untuk GLU? Dengan demikian, saya tidak akan mendapatkan kesalahan tautan lagi ke fungsi yang tidak ada yang dirujuk oleh perpustakaan GLU?
Codesmith
@AUTO GLU benar-benar tidak perlu, saya hanya pernah menyentuhnya dengan tiang 10 kaki selama kelas pemrograman grafis (kami harus menggunakan kode usang, itu menyakitkan, standarnya berubah lebih cepat daripada program pelajaran, saya kira). Itu hanya perpustakaan yang membantu dengan kode yang sudah usang. Jika kode Anda sudah diatur dengan GLU maka mungkin itu bau.
Dreta
1

Sudah lama sejak pertanyaan ini diajukan tetapi saya harap ini akan membantu orang-orang yang memiliki pertanyaan yang sama dengan Anda.

Saya memulai dengan OpenGL dengan membaca sebuah minibook arcsynthesis.org. Tidak yakin siapa yang menulisnya. Sepertinya pendaftaran situs telah berakhir atau sesuatu tetapi Anda harus dapat menemukannya di sini: http://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/ . Ini menggunakan OpenGL 3.3, jadi Anda akan menggunakan pipa modern dan semua praktik yang menyertainya, tetapi Anda tidak akan terkena tessellation atau menghitung shader.

Situs lain yang layak dilihat adalah https://open.gl/ . Tampaknya sangat SANGAT pemula dan tidak mencakup hal-hal yang hampir mendalam seperti materi di atas, tetapi itu bisa menjadi titik awal yang baik untuk orang-orang yang baru memulai.

Ingatlah untuk membaca wiki OpenGL dan google nama fungsi Anda jika Anda memerlukan bantuan. Beberapa halaman di wiki sama sekali tidak berguna tetapi yang lain cukup membantu, baik sebagai referensi dan sebagai bahan pembelajaran.

Menikmati
sumber
1
Orang yang disebutkan dalam jawaban yang diterima menulisnya Nicol Bolas - gamedev.stackexchange.com/users/8240/nicol-bolas
Jesse Dorsey
0

Tutorial lama ini masih sangat relevan untuk pemula. Bahkan, saya akan menyarankan mulai di sana daripada dengan versi OpenGL terbaru. Versi yang lebih baru telah membuang beberapa metode menggambar geometri yang lebih mudah (yaitu menggambar mode-langsung).

Dengan versi terbaru, Anda harus menyiapkan dan mengirim array simpul dan memberi tahu kartu video bagaimana simpul Anda disusun dalam larik yang Anda berikan. Hal-hal ini rumit untuk di-debug.

Beberapa versi (yaitu OpenGL ES 2.x) mengharuskan Anda untuk memberikan persamaan pencahayaan Anda sendiri (dalam bentuk Fragment Shaders) dan mengubah data vertex Anda sendiri sehingga berakhir di layar yang Anda inginkan (Vertex Shaders). Ini bahkan lebih sulit untuk di-debug, dan bukan tempat untuk pemula (menurut saya).

Jadi saya sebenarnya menyarankan agar Anda kembali ke tutorial NeHe (dll) dan mulai dari sana. Mereka mungkin "ketinggalan zaman" tetapi mereka masih bekerja. Ketika Anda mulai memahami apa yang sebenarnya terjadi dalam render pipeline di OpenGL dan merasakan beberapa konsep matematika yang membuat hal-hal ini bekerja, maka Anda akan siap untuk melihat ke beberapa metode yang lebih mutakhir dari rendering dalam OpenGL.

notlesh
sumber
Sebenarnya mereka TIDAK bekerja. Itu sebabnya saya memposting pertanyaan ini. Mereka menggunakan fungsi gluPerspektif yang sudah usang, dan tidak ada pengganti absolut.
Pembuat kode
1
Itu bukan fungsi OpenGL. Ini adalah fungsi utilitas terpisah yang disediakan oleh perpustakaan lain. Anda dapat menemukan kodenya dengan mudah - tidak terlalu sulit.
notifikasi
Terima kasih, tetapi saya hanya menemukan pengganti yang tidak sempurna yang tidak dapat saya gunakan. Ia menerima argumen "float * matrix", sedangkan yang lama menggunakan beberapa internal matrix. Lalu apa yang saya masukkan untuk itu?
Codesmith
Hit pertama di google untuk "implementasi gluPerspektif" adalah persis apa yang Anda cari. itu memanggil glFrustum, yang tidak tersedia di beberapa versi terbaru OpenGL (ES 2.x tidak termasuk itu). Bahkan itu tidak terlalu sulit untuk menemukan alat untuk.
notifikasi
0

Seperti yang dikatakan orang lain, sebagian besar buku sudah usang atau terlalu canggih. Meskipun demikian, saya akan merekomendasikan edisi ke-5 dari SuperBible tetapi hanya untuk mendapatkan gambaran singkat tentang apa yang dapat dilakukan di OpenGL dan untuk membiasakan diri dengan hal-hal seperti tampilan / proyeksi dll.

Menyelam dengan cepat ke OpenGL modern mungkin membuat Anda kewalahan pada awalnya, jadi pertimbangkan untuk belajar melakukan beberapa hal dasar dalam versi yang sekarang sudah tidak digunakan lagi.

Saya juga ingin menambahkan situs dengan tutorial yang bagus yang saya temukan belakangan ini http://ogldev.atspace.co.uk/

Grieverheart
sumber
Terima kasih, saya akan memeriksa tutorial itu; tetapi untuk menggunakan OpenGL SuperBible, pertanyaan saya masih tetap: Bagaimana cara memperbaiki GLU, karena freeglut didasarkan padanya?
Codesmith
@AUTO: FreeGLUT bukan "berbasis" GLU. Beberapa fungsi FreeGLUT memanggil GLU, tetapi jika Anda tidak memanggil fungsi-fungsi itu, maka Anda tidak akan memiliki masalah.
Nicol Bolas
Tapi bukankah mungkin SuperBible memanggil fungsi-fungsi ini? Dan jika tidak, saya tidak bisa menggunakan itu .
Codesmith
Sungguh, pendapat saya adalah untuk tidak repot-repot dengan kode sumber yang disediakan dengan SuperBible. Bacalah tetapi cobalah untuk membuat semuanya dari awal. Pada masalah Anda dengan GLU, tebakan terbaik saya adalah bahwa Anda belum mengkonfigurasi / menginstal perpustakaan Anda dengan benar. Unduh versi terbaru MinGW. Juga unduh freeglut versi terbaru dan kompilasi, atau temukan perpustakaan yang telah dikompilasi sebelumnya. Bagaimanapun, Anda harus mulai belajar beberapa hal daripada menghabiskan begitu banyak waktu untuk merencanakan cara memulai.
Grieverheart
@UTO: Mengapa SuperBible memanggil mereka? Jika memang memanggil mereka, kode SuperBible tidak akan berfungsi. Itu sebabnya tidak memanggil mereka.
Nicol Bolas
0

sayangnya, arcsynthesis.org (situs yang disebutkan dalam jawaban yang diterima) tampaknya turun dan keluar. (EDIT: tersedia di tautan ini !).

Tutorial Anton Gerdelan untuk OpenGL 4 sangat mudah dibaca dan terkini pada pertengahan 2014. Beberapa yang pertama gratis, sisanya tersedia di amazon, di mana mereka memiliki ulasan yang bagus, dengan harga murah. Sejauh ini saya senang.

Ada beberapa tutorial gratis untuk OpenGL 3.3+ di http://www.opengl-tutorial.org/ . Mereka tanggal kembali ke 2012, tetapi mungkin bahan tambahan yang baik untuk sumber lain.

iHateCamelCase
sumber
OGLDev terkini, mendalam, dan gratis. ogldev.atspace.co.uk/index.html
Yattabyte
batuk
Nicol Bolas
Senang melihatnya tersedia! Saya akan memeriksa bahan-bahan ini juga.
iHateCamelCase