Pencere boyutlarını değiştirmek için aslında iki yöntem bulunmaktadır.
Normali ve alışa gelmiş metot; fare ile boyutlandırmak. Fakat bu yöntem kullanımı kolay ve kod yazma ihtiyacı gerektirmese de, pencere açısından pek simetrik bir durum değildir.
Konumuz olan diğer yöntem ise; monitörün çözünürlüğüne uygun boyutları, programa yazdığımız komutlar ile pencereyi yeniden boyutlandırmak.
Penceremizin boyutlarını değiştireceğimiz fonksiyonu tanımakla başlayalım.
glfwSetWindowSize Fonksiyonu
// PrototipBu fonksiyon, pencerenin boyut özelliklerini yeniden tanımlayarak, pencere boyutunu değiştirmektedir.
void glfwSetWindowSize(GLFWwindow *window, int width, int height);
// Kullanımı
glfwSetWindowSize(window, 1280, 720);
Fonksiyon Parametreleri;
- [in] GLFWwindow *window - Yeniden boyutlandıracağımız pencere nesnesi
- [in] int width - Pencere'nin yeni boyutunun genişlik bilgisi.
- [in] int height - Pencere'nin yeni boyutunun yükseklik bilgisi.
// 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);
else if(key == GLFW_KEY_1 && action == GLFW_PRESS){
glfwSetWindowSize(window, 800, 600);
cout << "GLFW -> Pencere yeniden boyutlandirildi." << endl;
}
else if(key == GLFW_KEY_2 && action == GLFW_PRESS){
glfwSetWindowSize(window, 1280, 720);
cout << "GLFW -> Pencere yeniden boyutlandirildi." << endl;
}
else if(key == GLFW_KEY_3 && action == GLFW_PRESS){
glfwSetWindowSize(window, 1400, 900);
cout << "GLFW -> Pencere yeniden boyutlandirildi." << endl;
}
}
Bu sefer klavye fonksiyonunda '1', '2' ve '3' tuşlarına basıldığında: glfwSetWindowSize fonksiyonuna farklı değerler vererek, pencerede yeniden boyutlandırma işlemini gerçekleştiriyor.
Ayrıca, önceki yazımı pekişmek adına şöyle bir örnek sunuyorum.
void pencereBoyut_callback(GLFWwindow *window, int width, int height)Bu örnekte ise, 'pencereBoyut_callback' fonksiyonu içerisinde pencere boyutlarında oynama gerçekleştiğinde; eğer pencere boyutu '1800 x 900'dan büyükse, yeniden pencereyi '1400 x 900' boyutlarına geri döndürüyor.
{
if(width > 1800 || height > 900){
glfwSetWindowSize(window, 1400, 900);
cout << "\n\nResize Callback fonksiyonu" << endl;
cout << "------------------------------------------" << endl;
cout << "Pencere yeniden boyutlandirildi." << endl;
}
}
Bu yazımızda ileride ihtiyaç duyabileceğimiz pencere boyutlarının bilgisini elde etmeyi öğrendik.
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