Peki bu konu nerelerde ve niçin kullanılır? Bize ne gibi bir fayda sağlar? Bu sorunların cevabını birlikte öğrenelim.
Oyun programlarken bu konu bize, fazla bir fayda sağlamıyor. Fakat duruma göre ihtiyaç duyabileceğimiz yerler olacak. Mesela OpenGL içeriğimize göre yada dinamik olarak birden fazla pencere oluşturmamız ve bunlarla çalışmamız gerekebilir. Çeşitli durumlarda pencere başlıklarını yeniden tanımlamamız gerekebilir.
Örnek vermek gerekirse: Kendi 3D model tasarım programı (mesela blender, 3Ds Max, Maya vb.) geliştirdiğimizi düşünelim. 3D Model için gereken bir özellik olan perspektif bakış açılarıdır. Modelin Ön (Front), Yan (Side), Arka (Back), Üst (Top) ve Alt (Under) gibi perspektif bakış ihtiyacımıza göre pencere yada ayrı ayrı pencereler oluşturduğumuzu düşünelim.
Anlatmak istediğim, bir pencerenin perspektif bakışını değiştirdiğimizi varsayalım, yani ön profil yerine arka profile geçiş yaptık. Bu durumda modele hangi perspektif'den bakıldığı bilgisini başlığı değiştirerek, pencere başlığından kısaca öğrenebiliriz.
Eğer 3D model tasarım programı üzerinde deneyim sahibi değilseniz, verdiğim örnek biraz kafa karıştırıcı gelebilir. İleri de deneyim kazandıkça ne demek istediğimi anlayacağınızdan eminim.
glfwSetWindowTitle fonksiyonu nedir?
// Prototip tanımı void glfwSetWindowTitle (GLFWwindow *window, const char *title) // Kullanım şekli glfwSetWindowTitle(window, "Pencere Başlık Adı");glfwSetWindowTitle: Pencere başlığını çalışır (runtime) vaziyette değiştirmemize yarayan void türünden bir fonksiyondur.
Fonksiyon Parametreleri;
- GLFWwindow *window - Önceden oluşturduğumuz ve kullanacağımız pencere nesnesi
- const char *title - Pencerenin yeni başlığı girdiğimiz değişken
// Klavye mesajlarının işlendiği callback fonksiyonu static void klavye_callback(GLFWwindow *window, int key, int scancode, int action, int mods) { // Esc tuşuna basıldığında, pencereyi kapat if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) glfwSetWindowShouldClose(window, GL_TRUE); /* Klavye Tuşlarına göre pencere başlık ismini değiştirme */ // Tuş 1'e Basılırsa : Önceden tanımlanmış isim ile başlığı değiştir else if(key == GLFW_KEY_1 && action == GLFW_PRESS){ glfwSetWindowTitle(window, "Deneme için hazırlanmış başlık"); cout << "Pencere basligi degistirildi, yeni baslik : " << "Deneme için hazırlanmış başlık" << endl; } // Tuş 2'e Basılırsa : Global'de tanımlanmış değişken ile başlığı değiştir else if(key == GLFW_KEY_2 && action == GLFW_PRESS){ glfwSetWindowTitle(window, baslik); cout << "Pencere basligi degistirildi, yeni baslik : " << baslik << endl; } // Tuş 3'e Basılırsa : Konsol penceresinde girilen string isim ile başlığı değiştir else if(key == GLFW_KEY_3 && action == GLFW_PRESS){ cout << "Lutfen bir pencere basligi giriniz : "; getline(cin, sBaslik); yeniBaslik = sBaslik.c_str(); glfwSetWindowTitle(window, yeniBaslik); cout << "Pencere basligi degistirildi, yeni baslik : " << yeniBaslik << endl; } }'1' tuşuna basıldığında; Önceden hazırladığımız, "Deneme için hazırlanmış başlık" yazısını yeni pencere başlığı olarak değiştirecek.
'2' tuşuna basıldığında; Önceden tanımladığımız char * türünden 'baslik' adında ki değişkendeki değeri yeni pencere başlığı olarak değiştirecek.
'3' tuşuna basıldığında ise; Konsol penceresinden bir satırı girerek, pencere başlığını dinamik olarak değiştirmektedir. Sizi bir konuda uyarmalıyım: Windows konsol penceresi, UTF-8 karakter setini desteklememektedir. Bu nedenle Türkçe karakterler kullanmamaya çalışın.
Bitbucket: main.cpp dosyasını indirmek için tıklayın.
Referans:
http://www.glfw.org/docs/latest/group__window.html
Hiç yorum yok:
Yorum Gönder