glfwSetScrollCallback Fonksiyonu Nedir?
// Prototip Tanımı
GLFWscrollfun glfwSetScrollCallback (GLFWwindow * window, GLFWscrollfun cbfun);
// Kullanımı
glfwSetScrollCallback(window, Fare_Tekerlek_Callback_Adı);
glfwSetScrollCallback: Fare tekerlek girdisini elde etmek ve girdileri isteğimize göre programlayabilmek için tasarladığımız geri çağırın (callback) fonksiyonumuzu kütüphaneye tanımlamaya yarar.
Fonksiyon Parametreleri;
- GLFWwindow *window - Önceden oluşturduğumuz ve kullanacağımız pencere nesnesi
- GLFWscrollfun cbfun - GLFWscrollfun fonksiyon gösterici türünden bir geri çağırım fonksiyon ismi
Geri Çağırım Fonksiyonu
// Prototip
typedef void(* GLFWscrollfun)(GLFWwindow *, double, double)
// Kullanımı
static void mouseWheel_callback(GLFWwindow *window, double xoffset, double yoffset)
{
}
Mouse tekerlek (wheel) girdilerinin bilgisini almak ve ihtiyacınıza göre programlayabilmek için oluşturmanız gereken geri çağırım fonksiyonu.
Fonksiyon Parametreleri ;
- [in] GLFWwindow *window - Önceden oluşturduğumuz ve kullanacağımız pencere nesnesi
- [in] double xOffset - x-axis, Yatay (Horizontal) tekerlek girdisi (Not: İki tekerleği olan özel farelerde bulunmaktadır.)
- [in] double yOffset - y-axis, Dikey (Vertical) tekerlek girdisi
Örnek:
Bu örnek de, fare tekerlek girdisine (yOffset) göre kamerayı uzaklaştırma ve yakınlaştırma işlemlerini temsili olarak gerçekleştireceğiz.
// Zoom Faktörü
GLdouble dZoomFactor = 1.0;
İlk olarak global düzeyde bir zoom faktörü tanımlamamız gerekiyor. Ardından;
/* Render Alani */
float ratio;
int width, height;
// OpenGL içerik boyutu alınıyor. (Genişlik ve Yükseklik)
glfwGetFramebufferSize(window, &width, &height);
ratio = width / (float) height;
// OpenGL Komutları -- Örnek olması için koyuldu.
// OpenGL Derslerinde İşlenecek
glViewport(0, 0, width, height);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-ratio * dZoomFactor, ratio * dZoomFactor, 1 * dZoomFactor, -1 * dZoomFactor, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Render alanında, glOrtho fonksiyonuna zoom faktörünü dahil edin. Burada yenilenen dZoomFactor değerine göre yakınlaşma ve uzaklaşma gerçekleşecek. Son olarak geri çağırım fonksiyonunu tanımlıyoruz.
// Fare Tekerleği Callback
static void mouseWheel_callback(GLFWwindow *window, double xoffset, double yoffset)
{
cout << "X offset : " << xoffset << endl;
cout << "Y offset : " << yoffset << endl;
if(yoffset > 0)
dZoomFactor -= 0.05;
else
dZoomFactor += 0.05;
cout << "Zoom Faktoru : " << dZoomFactor << endl;
}
Geri çağırım fonksiyonumuzda, yOffset değerini 'if' kontrolünden geçirerek, 0'dan büyük olması halinde zoom faktörünü %5 eksiltiyor yada %5 arttırma yapmasını istedik. Böylece yakınlaştırma veya uzaklaştırma işlemi ile OpenGL içeriğini yeniden ölçeklendirme yapmış olduk.
Sonuç
Bitbucket: main.cpp dosyasını indirmek için tıklayın.
Referans:
http://www.glfw.org/docs/latest/group__input.html
 
 


 
 
 
 
 
 
 
 Merhaba, ben Mustafa OĞUZ. Bilgi İşlem uzmanlığının yanında Yazılım ve Webmaster işleri ile haşır neşirim. Bu işlerden arta kalan zamanda amatör olarak Grafik tasarım ve blog yazarlığı yapmaktayım...
Merhaba, ben Mustafa OĞUZ. Bilgi İşlem uzmanlığının yanında Yazılım ve Webmaster işleri ile haşır neşirim. Bu işlerden arta kalan zamanda amatör olarak Grafik tasarım ve blog yazarlığı yapmaktayım... 
Hiç yorum yok:
Yorum Gönder