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
cevap
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 .
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.
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
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
- 1. openGL C++
- 2. opengl ile 2D Arazi nasıl yapılır?
- 3. Opengl - farklı köşe formatları oluşturma
- 4. openGL Doku eşleme - c
- 5. C++ C++ DLL işlevi nasıl yapılır C#
- 6. Android OpenGL dokular: anında oluşturma ve silme
- 7. Qt C++ Windows ve OpenGL kitaplığı
- 8. FFmpeg'de nasıl arama yapılır C/C++
- 9. C programı nasıl yapılır (Linux'ta)?
- 10. Güvenlik programı nasıl yapılır? #c
- 11. QG OpenGL Widget'ta OpenGL işlevleri nasıl kullanılır?
- 12. openGL
- 13. qt5'in qtquick 2.0 sürümünde özel opengl oluşturma
- 14. OpenGL
- 15. Opengl - Ben yazdım bazı opengl koddan bir harita oluşturmak istiyorum
- 16. OpenGL kullanarak C++ 'da veri kümeleme
- 17. C/C++'da pencere hizmeti oluşturma örnekleri (Hayır GUI)
- 18. C++ Vektör Matematik ve OpenGL uyumlu
- 19. OpenGL
- 20. OpenGL:
- 21. OpenGL
- 22. OpenGL
- 23. Windows XP'de birden çok ekran kartı ile OpenGL oluşturma
- 24. C++ ile GLUT/OpenGL ile nasıl metin çizerim?
- 25. OpenGL, SDL ve C++ kullanarak nasıl metin çizerim?
- 26. Yeni Anonim Sınıf nasıl dinamik yapılır? C# '
- 27. C# içindeki bir tamsayıya nasıl başvuru yapılır?
- 28. C# ile Karşılıklı Kimlik Doğrulama nasıl yapılır?
- 29. Obj-C Kategoriler Python'da Nasıl Yapılır?
- 30. C# ile iki şeffaf katman nasıl yapılır?
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
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. –