2010-05-18 24 views
5

OpenGL'de (basit dikdörtgen alanı) oluşturma nasıl yapılır? Lütfen C++ örneği gönderin.OpenGL (C++) oluşturma nasıl yapılır

+1

Muhtemelen, örneğin bir örnek kodu sormaktan başka, denediğiniz şeyi tanımlamak daha iyidir. İşte online olarak ücretsiz olan ve muhtemelen aradığınız şey hakkında bilgi sahibi olan OpenGL Red Book'a bir link. http://www.glprogramming.com/red/ – Feanor

+0

Bağlantı için teşekkür ederiz. GlFrustum, projeksiyonlar vb. Ile oynadım ama çok uzun zaman önce. Kırpmanın güzel ve basit bir örneğini almak istiyorum. –

cevap

2

Yalnızca belirli bir dikdörtgeni görüntülemek isterseniz, glFrustrum veya glOrtho gibi glViewPort ile bir arada bulunmanız gerekir. Bu, kırpma dikdörtgenini ayarlayan aslında glViewPort. glFrustrum, glOrtho (gluPerspective, vb.) Daha sonra bu dikdörtgen için bir takım gerçek koordinatları eşler. Tipik olarak, glViewPort'u zorlukla fark edersiniz, çünkü normalde kullandığınız pencerenin tüm alanına ayarlanır ve değiştirdiğiniz şey pencerede farklı görünümler elde etmek için yapılan eşlemedir.

Yalnızca glFrustum (örneğin) ayarını kendi başınıza ayarlarsanız, ekranın görüntü alanı aynı kalır ve haritayı değiştirirsiniz, böylece pencere alanının tamamını doldurursunuz ve temelde etrafında sanal kamera, böylece görüntülenen "dünya" üzerinde yakınlaştırma veya dışarı (vb). Tersine, sadece glViewPort ayarını yaparsanız, tam olarak aynı verileri görüntülersiniz, ancak daha küçük bir dikdörtgenin içine girersiniz.

Verileri daha küçük bir dikdörtgene "kırpmak" için, görünüm bağlantı noktası dikdörtgeni küçültüldüğünden, her ikisini de aynı anda "zıt" yönde ayarlamanız gerekir, böylece telafi etmek için görünümünüzü yakınlaştırırsınız .

7

Muhtemelen ihtiyacınız olan OpenGL'nin scissor mekanizmasıdır. x, y, width ve height parametreleri tarafından tanımlanan bir dikdörtgen girmeyen piksel render

O klipler.

Ayrıca, etkin olduğunda bu OpenGL durumunun, temizlenen alanı kısıtlayarak glClear komutunu etkilediğini unutmayın.

+0

Gelecekte oluşturulmuş tüm sahne nesnelerini bu kırpma dikdörtgeniyle kırpılmasını nasıl önlersiniz? Diğer bir deyişle, yalnızca bir GUI öğesinin çocukları için bu kırpma dikdörtgeni uygulamak istediyseniz, ancak sahnedeki diğer nesneleri oluşturmak istediğinizde, diğer tüm nesnelerin bu dikdörtgen tarafından kırpılmasını nasıl önlersiniz? – BigSauce

+0

Tam olarak ne demek istediğimi bilmiyorum, ancak ortak uygulama, 3D renderlemeyi GUI görüntülemeden FBO ve geçişleri kullanarak ayırmaktır. – Stringer