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 .
12.07.2013 tarihli yazı 17688 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:
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET