elektrik port üyelik servisleri elektrik port üyelik servisleri

SDL/OPENGL Tabanlı Oyun Programlama |
Oyun Programlamaya Giriş

Ne zaman günlük yaşantımızdan bir an olsun uzaklaşmak stres atmak istesek video oyunları aklımıza gelen çarelerin başında geliyor. Bizi eğlendiren bu oyunların nasıl üretildiklerini merak ediyor musunuz? Peki ya sizde kendi oyununuzu yapmak ister misiniz? Bu yazımızda oyun programla hakkında temel bilgiler verip Opengl ve Sdl tabanlı oyun programlamaya giriş yapacağız .



A- A+
12.07.2013 tarihli yazı 7375 kez okunmuştur.
Öncelikle bilmelisiniz ki yalnızca programlama bilmeniz oyun yapmak için yetersiz kalacaktır. İyi bir oyun yapabilmek için kusursuz geometrik cisimler, sorunsuz fizik dinamikleri ve en önemlisi de hayal gücünüz ihtiyaçlarınızın başında gelecektir. 
 


 
Oyun programlamak için kullanacağımız dil C/C++ olacaktır. Dolaylı yoldan oluşan işlemler her zaman için performans kaybına neden olacaktır. Bu yüzden oyun programlamak için C#, Java gibi programlama dillerinin kullanılması önerilmez.
 


OPENGL (Open Graphics Library)

Opengl, 2D ve 3D çizim yapmanıza olanak sağlayan açık kaynaklı bir grafik kütüphanesidir. Taşınabilirliği, platformdan bağımsız olması, birçok programlama diliyle kullanılması ve ücretsiz olması nedeniyle Opengl tercih edilen API lerin başında gelmektedir.


SDL (Simple DirectMedia Library)

Sdl, özgür ve açık kaynak kodlu bir çoklu ortam kütüphanesidir. Birçok platformda değişikliğe gerek duymadan grafik, ses, klavye, fare etkileşimi sunan bir arabirim niteliğindedir. Bu özellikleriyle Sdl, Opengl üzerinde tamamlayıcı bir nitelik taşımaktadır. Bu nedenle Sdl ve Opengl oyun programlamak için biçilmiş kaftandır. Piyasada bulunan oyun motorlarının birçoğu Sdl/Opengl tabanlıdır.
 
 
SDL/OPENGL Projesi Oluşturma

Kullandığımız birçok derleyici Opengl' i kendi içinde barındırmaktadır. Ancak bazı derleyiciler Sdl' i kendi içerisinde bulundurmamaktadır. Bu nedenle Sdl' i derleyicinize kendiniz eklemeniz gerekmektedir.
 

► Sdl açık kaynaklı bir kütüphane olduğu için rahatlıkla kendi resmi sitesinden indirebilirsiniz.


Öncelikle Sdl/Opengl projemizi doğru bir şekilde oluşturmamız gerekmektedir. Bu konuda zorluk çekenler için verereceğimiz linklerden derleyicinize göre Opengl ve Sdl' i nasıl projenize ekleyeceğinizi resimli anlatımlardan takip edebilirsiniz.


 Opengl 
 Sdl 

 

 

Pencere Oluşturma

Yazdığımız kodları çalıştırabilmemiz için derleyicimizin " Proje ayarları>Linker ayarları> Diğer linker seçenekleri " kısmına aşağıda verdiğimiz linker parametreleri eklemeniz gerekmektedir. 


Linker parametreleri:

 “-lmingw32 –lSDLmain –lSDL –lopengl32 –lglu32”
 

Öncelikle kullanacağımız kütüphaneleri ekliyoruz.. 
 
    #include "SDL/SDL.h"
    #include "SDL/SDL_opengl.h"
    #include <stdio.h>

 

Programımızın başlangıcı..

int main( int argc, char* args[] )
{



    Sdl ‘i yüklediğimiz kısım..

    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 );
    SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8);
    SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 );
    SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8);
    SDL_GL_SetAttribute( SDL_GL_BUFFER_SIZE, 32);
    SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );


   Oluşturacağımız pencere adı..

   SDL_WM_SetCaption( "İlk Denemeler", NULL );


   Pencerenin boyutu..

   SDL_SetVideoMode(600,400,32, SDL_OPENGL );


   Standart ayarlamalar..

   glClearColor(1,1,1,1); //(kırmızı,yeşil,mavi,alfa)
   glViewport(0,0,600,400);   // pencerenin gösterilecek kısmı
   glShadeModel(GL_SMOOTH);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glDisable(GL_DEPTH_TEST);
   printf ("calisiyor..");


  5 saniye bekle..

  SDL_Delay(5000);


  Programı sonlandır..

  SDL_Quit();

return 0;
}


Böylece Opengl ve Sdl ile ilk penceremizi oluşturmuş olduk. İlerleyen yazılarımızda  Sdl ve Opengl tabanlı oyun programlamaya devam edeceğiz.



Kaynaklar: 

 
Hasan Güner Hasan Güner Yazar Hakkında Tüm yazıları Mesaj gönder Yazdır



ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar