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
// PrototipBu fonksiyon, pencereyi yeniden konumlandırır, yani pencerenin yerini değiştirir.
void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos);
// Kullanımı
glfwSetWindowPos(window, 420, 300);
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.
// Klavye mesajlarının işlendiği callback fonksiyonuBu 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.
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 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