Glfw Penceresini Yeniden Boyutlandırma - Mustafa Sabri OĞUZ

Duyurular

9 Mayıs 2014 Cuma

Glfw Penceresini Yeniden Boyutlandırma

Önceki yazımda 'Glfw Pencere Boyutlarını Öğrenmek'ten bahsetmiştim. Bu yazımda ise Glfw penceresini program içerisinden yeniden boyutlandırmayı anlatmak istiyorum.

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

// Prototip
void glfwSetWindowSize(GLFWwindow *window, int width, int height);

// Kullanımı
glfwSetWindowSize(window, 1280, 720);
Bu fonksiyon, pencerenin boyut özelliklerini yeniden tanımlayarak, pencere boyutunu değiştirmektedir.

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.
Örnek:
// 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)
{
if(width > 1800 || height > 900){
glfwSetWindowSize(window, 1400, 900);
cout << "\n\nResize Callback fonksiyonu" << endl;
cout << "------------------------------------------" << endl;
cout << "Pencere yeniden boyutlandirildi." << endl;
}
}
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.

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önderme