GLUT'un alternatifleri nelerdir?


12

OpenGL öğrenmeye çalışıyorum ve GLUT'un eski olduğunu öğrendim . SDL'yi zaten biliyorum ve iyi bir alternatif gibi görünüyor. SDL'yi OpenGL ile oyun geliştirmek için kullanmalı mıyım yoksa daha iyi alternatifler var mı? Oyun geliştirmede yeniyim, bu yüzden son teknoloji hakkında fazla bir şey bilmiyorum.

Yanıtlar:


27

GLUT'un eski olduğunu öğrendim.

Karşılaştığınız ilk cevabı kabul ettiğinizde olan budur; kötü bilgi alırsın. GLUT 3.7 kullanılmamalıdır, ancak FreeGLUT tamamen geriye dönük olarak uyumludur.

Ancak, sorunuz başka bir yere gider. Gerçek bir oyun yapmak için * formunun GLUT'u uygun değildir. Size ana döngünün kontrolünü vermez ve bir oyunda gerçekten buna ihtiyacınız vardır (FreeGLUT'un ana döngüyü kontrol etmenin bir yolu vardır, ancak yine de tuhaftır). GLUT, grafik demoları yazmak içindir. Yeni grafik efektleri test ederken bu çok önemlidir, bu nedenle gerektiğinde araç kutunuzda olması gerekir. Ancak ana oyun kodunuz asla bunu kullanmamalıdır.

GLFW , GLUT'a oyun merkezli hafif bir alternatiftir. OpenGL penceresi oluşturmanın ötesinde şeyler için temel destek sağlar. Giriş almanızı, görüntüleri doku olarak yüklemenizi ve birkaç başka şeyi yapmanızı sağlar.

SDL , SFML ve Allegro 5 multimedya araç setleridir. OpenGL pencereleri oluşturabilirler, ancak bundan çok daha fazlasını yaparlar . Giriş, ses ve oyun yapmak için ihtiyacınız olan diğer çeşitli şeyler için tam destek sağlarlar. Bir oyun yapıyorsanız, bunlardan herhangi biri iyi bir başlangıç ​​noktasıdır. Şahsen Allegro 5'i seviyorum, ancak bu sadece iyi dokümantasyona ve temiz bir API'ye olan önyargım.


1
AAA başlıkları (yalnızca PC ve çoklu platform) ne kullanıyor? Bahsettiğiniz bunları (GLFW, Allegro) opengl penceresini işlemek için kullanıyorlar mı? ya da sıfırdan kendi 'her şeyi' mi yazıyorlar?
Quazi Irfan

@iamcreasy: "AAA başlıklar" (bu terimden gerçekten nefret ediyorum) bunlardan hiçbirini kullanmayın. Genel olarak, açık kaynaklı bir şey kullanmazlar. Yapabilirlerdi, ancak bir kütüphane kullanacaklarsa, desteklenen bir kütüphane kullanmayı tercih ederlerdi. ODL veya Bullet gibi bazı istisnalar vardır. Ancak bunlar kuraldan ziyade istisnalardır.
Nicol Bolas

GLFW 'görüntüleri ne zamandan beri doku olarak yüklüyor?' Kesinlikle özellik listesinde değil; ne de glfw üstbilgimde bu amaca uzaktan hizmet eden işlevler.
deceleratedcaviar

1
GLUT'un diğer büyük dezavantajı, girdi modelinin oyunlara özellikle uygun olmaması; ham anahtar kodları almanın veya değiştirici tuşların kendisinde basın / bırakma olayları almanın bir yolu yoktur (örneğin, ctrl'yi bir yangın düğmesi olarak kullanmak) veya altta yatan GL bağlamını (X11'de vsync'yi etkinleştirmek için gerekli olan), Örneğin).
kabarık

1
@NicolBolas ah, yaklaşık 2.7 unuttum, onlar [konuları, görüntüleri] GLFW 3.0 sürümü için 'bağlam dışı' ilan edildi.
deceleratedcaviar


2

Hedefiniz bir oyun geliştirmekse,

Bu, oyununuzun platformlar arası olmasını isteyip istemediğinize bağlıdır. Taşınabilir (Windows, Mac, Linux) oyunlar için SDL tek seçenek gibi görünüyor.

Yalnızca Windows'u ve / veya XBox'u hedeflerseniz, çok daha iyi alternatifler vardır, örneğin XNA sizi çok yazmaktan kurtarır manuel olarak fazla kod önler.

Hedefiniz OpenGL'yi öğrenmekse,

Sadece ham OpenGL programlayın, ancak pek çok sezgisel kavramlar, matematik ve büyük el kitapları ile yüzleşmeye hazır olun.


Takumi'nin dediği gibi, taşınabilir bir kütüphane olarak SFML de var. SDL imho'dan daha iyi (daha güncel.)
kaoD

8
-1: "Taşınabilir (Windows, Mac, Linux) oyunlar için SDL tek seçenek gibi görünüyor." Bu uzaktan bile doğru değil. SFML ve Allegro 5'in her ikisi de tamamen geçerli alternatifler olarak mevcuttur ve her ikisinin de daha geniş platform tabanları vardır.
Nicol Bolas

1

GLUT, bir API'nin yanı sıra bir kütüphanedir. Orijinal kütüphane gerçekten kullanılmıyor. API farklı bir şey, başlamak oldukça iyiydi, sadece sınırlamaları aşmak ve yeni ihtiyaçları ele almak için revizyonlara ihtiyaç duyuyor. Birincil geçerli uygulama, desteklenen ve kullanılmayan FreeGLUT'tur. Bu, GLUT'a (GLUT kütüphanesinde olduğu gibi) iyi bir alternatifin GLUT (FreeGLUT'ta olduğu gibi) olduğu anlamına gelir.

Yukarıda "ana döngünün kontrolü" ile ilgili sorun yanlıştır. Daha yeni GLUT sürümleriyle, oyun döngünüz üzerinde daha iyi kontrole sahip olabilirsiniz (bu sizin için önemliyse). Sınırlama glutMainLoopEvent () ile giderildi. Bu ve diğer sınırlamalar burada ele alınmaktadır:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


" Daha yeni GLUT sürümleriyle, oyun döngünüz üzerinde daha iyi kontrole sahip olabilirsiniz (bu sizin için önemliyse). " Bu bir oyun, yani evet , bu sizin için önemli. Ayrıca, glutMainLoopEventana döngüyü yönetmek için gitmek için iyi bir yoldur. İstediğiniz verileri istediğiniz zaman aldığınız bir sorgulama modeli yerine, size veri beslemek için olaya dayalı bir model kullanır.
Nicol Bolas

Olaylardan saklanan verilere sorgulamadığınız sürece, olay odaklı modelin yoklamadan daha verimli olduğunu iddia etmeliyim (ki bu gayet iyi). Yoklama sistemi kaynakları dikkatle yapılmalıdır.
Ingemar Ragnemalm

0

Qt OpenGL'yi destekliyor. Open Inventor'a bir göz atın ve doğrudan daha üst düzey bir 3D API'ye gitmenizi mantıklı olup olmadığını düşünün.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.