GLFW Projesi Oluşturma ve Yapılandırma - Mustafa Sabri OĞUZ

Duyurular

17 Mart 2014 Pazartesi

GLFW Projesi Oluşturma ve Yapılandırma



Artık GLFW fonksiyonlarını tanımaya ve uygulama geliştirmeye başlayabiliriz. Fakat GLFW kütüphane fonksiyonlarını kullanabilmek için projeye tanımlanması gerekir.

1. Adım : Proje Oluşturma
Bunun için Code::Blocks'u çalıştırın. Ardından yeni proje için menü çubuğundan "File -> New -> Project" sekmesine tıklayın.

C++ dili ve kütüphane hakkında, kendimizi geliştirdiğimiz için konsol penceresine ihtiyacımız olacak. Bu nedenle karşınıza gelen "New From Template" penceresinde, "Console Application" seçeneğine tıklayın. Ardından "Go" butonuna basın.

Bu seferde karşımıza proje hakkında kurulum sihirbazı (wizard) çıkacak. İlk adım "Sihirbazı atlamak ister misiniz?" diyor. Sihirbazın kalmasını istediğimiz için seçeneği boş bırakıp, "Next" butonuna tıklayın.

İkinci adım, kullanacağımız dili sormaktadır. C++ dilini kullanacağımız için "C++" seçeneğini seçiniz ve ardından yine "Next" butonuna tıklayın.

Üçüncü adım, Proje adı ve kurulacağı dizini sormaktadır. "Proje title" kutucuğuna proje ismini girin. "Folder to create project in" seçeneğinden kurulacağı dizini (Belgelerim olabilir) belirleyin. "Next" butonuna tekrar tıklayın.

Son adımda, birden fazla derleyici (compiler) var ise hangisini kullanacağını ve çıktı programın dizinlerini belirleyin. Eğer farklı bir derleyici ile çalışmıyorsanız, varolan "GNU GCC Compiler" seçeneğini seçin ve "Finish" butonuna tıklayıp, işlemi tamamlayın.


Tebrikler, projeniz oluşturuldu. Gördüğünüz üzere "GLFW_Deneme" adında çalışma alanı (Workspace) oluştu. Ve varsayılan "main.cpp" dosyası da oluşturulmuş oldu.

2. Adım : Kütüphanenin Projeye Tanımlanması (Linklenmesi)

Glfw kütüphanesini tanımlayabilmek için projenizin build ayarlarına ulaşarak, yapılandırma yapmanız gerekiyor.

 Projeniz açık iken, menü çubuğundan "Project -> Build Options" veya Management alt penceresinden "GLFW_Deneme" projenize sağ tıklayın, ardından çıkan menüde "Build Options" seçeneğine tıklayın.

Kütüphanenin debug versiyonu bulunmadığından, "GLFW_Deneme" kök seçeneğine tıklayın. Böylece ekleyeceğiniz kütüphane dosyaları, debug ve release sürümlerinde geçerli olacaktır.

Not : Projelerde hata ayıklama (debug) işlemi gerektiğinden "Debug" ve "Release" olarak ikiye ayrılır. Debug seçeneğine kullandığınız kütüphanelerin (eğer varsa) debug dosyalarını yüklemeniz gerekli. Böylece sadece kendi kodunuz da değil, yabancı kütüphane'den kaynaklanabilecek hataları tespit edebilirsiniz. Release seçeneğine kullandığınız kütüphanelerin (eğer varsa) release dosyalarını yüklemeniz gerekli.

Yararlı Bilgi : Debug ve Release kütüphane dosyalarının farkı ;
Debug dosyaları, hata ayıklama fonksiyonlarının bulunmasından dolayı, dosya boyutu daha büyüktür. Ve uygulamanızı yavaşlatabilir.
Release dosyaları, projenin hata ayıklama kontrolü yapıldığından, bünyesinde hata ayıklama fonksiyonlarını barındırmaz. Bu nedenle dosya boyutu küçük ve hızlıdır.

Kütüphane dizinleri tanımak için, "Search Directories" tab'ını seçin, alt da "Compiler" tab'ının seçili olduğuna dikkat edin. Ardından "Add" butonuna tıklayarak, Glfw kütüphanesinin "include" klasörünü seçin.

Not : "Keep this as a relative path?"; Kütüphane dizin adresinin göreceli adres şeklinde kalsın mı? Eğer proje dizinine yakınsa (Bir üst dizinde olabilir) "Evet" değil ise "Hayır" demenizde fayda var.

Benzer işlemi "lib" klasörü için "Linker" tab'ını seçin ve "Add" butonu ile Glfw kütüphanesinin "lib" klasörünü seçin.

Son olarak proje'de kullanılacak kütüphane dosyalarını belirtilmesi gerekiyor. Bunun için "Linker Settings" tab'ına tıklayın. Yukarıda ki resimde görüldüğü gibi "Add" butonu tıklayarak, kütüphanelerin dosya isimlerini tanımlayın.

libglfw3 (Glfw kütüphane dosyası)
opengl32 (OpenGL kütüphane dosyası)
glu32 (The OpenGL Utility)
gdi32 (The Graphics Device Interface)

Tebrikler, kütüphaneleri başarılı bir şekilde projeye tanımladın. Artık en altta bulunan "Ok" butonuna tıklayarak, proje ayarlarını kaydedin.

Buraya kadar Glfw gibi benzer kütüphanelerin Code::Blocks projelerinde nasıl tanımlandığını öğrendin. Şimdi basit bir örnek ile uygulamayı test edin.

"main.cpp" adlı dosyanın içeriğini silip, Lütfen aşağıda ki kodu yapıştırınız.

#include <GLFW/glfw3.h>
#include <stdlib.h>
#include <stdio.h>

static void error_callback(int error, const char* description)
{
fputs(description, stderr);
}

static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
}

int main(void)
{
GLFWwindow* window;
glfwSetErrorCallback(error_callback);

if (!glfwInit())
exit(EXIT_FAILURE);

window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL);
if (!window)
{
glfwTerminate();
exit(EXIT_FAILURE);
}

glfwMakeContextCurrent(window);
glfwSetKeyCallback(window, key_callback);

while (!glfwWindowShouldClose(window))
{
float ratio;
int width, height;
glfwGetFramebufferSize(window, &width, &height);
ratio = width / (float) height;
glViewport(0, 0, width, height);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f);

glBegin(GL_TRIANGLES);
glColor3f(1.f, 0.f, 0.f);
glVertex3f(-0.6f, -0.4f, 0.f);
glColor3f(0.f, 1.f, 0.f);
glVertex3f(0.6f, -0.4f, 0.f);
glColor3f(0.f, 0.f, 1.f);
glVertex3f(0.f, 0.6f, 0.f);
glEnd();

glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}

Ve menü çubuğundan "Build -> Build and Run" yada F9 kısayolu ile projeyi derleyip, çalıştırın.

Sonuç :

Bitbucket: main.cpp dosyasını indirmek için tıklayın.

Referans:
http://www.glfw.org/docs/latest/quick.html

Hiç yorum yok:

Yorum Gönderme