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

Duyurular

24 Mayıs 2014 Cumartesi

Glfw Penceresini Yeniden Konumlandırma


Glfw penceresini ekran üzerinde yeniden konumlandırmak, özellikle 3D programlamada çoklu pencereler ile çalışacağımız zaman, ihtiyaç duyabileceğimiz bir konu. Çünkü pencerelerimizin üst üste olması, kullanıcı olarak pek hoş bir durum değildir.

Bu yazımda 'glfwSetWindowPos' fonksiyon tanımı ve bu fonksiyon ile penceremizin yerini değiştirmeyi öğreneceğiz.


glfwSetWindowPos Fonksiyonu

// Prototip
void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos);

// Kullanımı
glfwSetWindowPos(window, 420, 300);
Bu fonksiyon, pencereyi yeniden konumlandırır, yani pencerenin yerini değiştirir.

Fonksiyon Parametreleri;
  • [in] GLFWwindow *window - Yeniden boyutlandıracağımız pencere nesnesi
  • [in] int xpos- Pencerenin yatay düzlem (x koordinatı) üzerinde olmasını istediğimiz tam sayı (int) girdisi
  • [in] int ypos- Pencerenin dikey düzlem (y koordinatı) üzerinde olmasını istediğimiz tam sayı (int) girdisi
Not: Bu tarz ekran koordinatı kullanan fonksiyonlar, ekranın sol-üst köşesini origin (başlama) noktası olarak kabul edilir.

Ö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_W && action == GLFW_PRESS){

glfwSetWindowPos(window, 8, 30);
cout << "glfwSetWindowPos() fonksiyonu" << endl;
cout << "------------------------------------------" << endl;
cout << "GLFW -> Pencere yeniden konumlandirildi." << endl << endl;
}
else if(key == GLFW_KEY_A && action == GLFW_PRESS){

glfwSetWindowPos(window, WIDTH + 8, 30);
cout << "glfwSetWindowPos() fonksiyonu" << endl;
cout << "------------------------------------------" << endl;
cout << "GLFW -> Pencere yeniden konumlandirildi." << endl << endl;
}
else if(key == GLFW_KEY_S && action == GLFW_PRESS){

glfwSetWindowPos(window, 8, HEIGHT + 30);
cout << "glfwSetWindowPos() fonksiyonu" << endl;
cout << "------------------------------------------" << endl;
cout << "GLFW -> Pencere yeniden konumlandirildi." << endl << endl;
}

else if(key == GLFW_KEY_D && action == GLFW_PRESS){

glfwSetWindowPos(window, WIDTH + 8, HEIGHT + 30);
cout << "glfwSetWindowPos() fonksiyonu" << endl;
cout << "------------------------------------------" << endl;
cout << "GLFW -> Pencere yeniden konumlandirildi." << endl << endl;
}
}
Bu sefer klavye fonksiyonunda farklılık olması açısından 'W', 'A', 'S' 'D' tuşlarına işlem atadık. glfwSetWindowPos fonksiyonuna farklı değerler vererek, pencereyi yeniden konumlandırma işlemini gerçekleştiriyor.

Bu yazımızda ileride ihtiyaç duyabileceğimiz pencerenin yerini değiştirmeyi öğ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