PDA

Tam Sürümünü Görmek İçin : opengl öğrenmek zormu


elix
11/10/2006, 20:52
ileri düzeyde java biliyorum. bilgisayar mühendisliğinde okuyorum, okulda computer graphics dersi var, ama genelde matematik içerikliymiş, ona da girebilirim.

oyun programlama, 3d'ye karşı ilgim var ama uğraşmadım hiçbir temelim yok bu kouda. opengl ile ilgili bir projeye başlayabilirim.

sizce opengl ve c++'ı sağlam bir şekilde öğrenip güzel bir proje yapabilmem zor olur mu? javanın grafik kütüphanelerini kullanmayı düşünüyordum ama gafik denildiğinde opengl ve c++ diyor herkes.

okulda son sene, dersler çok değil.

yorumlarınızı bekliyorum.


mr1yh1
11/10/2006, 22:34
java içerisinden de opengl kullanabilirsin.
fakat opengl tek başına yeterli değil.

pencere açmak ; mouse, keyboard, joystick olaylarına tepki vermek için
glut öğrenmen gerekli. ( ya da benzer bir kütüphane ).

texture mapping için, değişik resim formatlarını okuyabilen bir kütüphane kullanman lazım.

çizeceğin nesneler artarsa bir scene graph kullanman faydalı olur.
yoksa performans problemleri yaşarsın.

eğer çarpışma dedektörü istiyorsan birbaşka kütüphane kullanman lazım.

programına matematiksel olmayan 3d nesneler eklemek istiyorsan,
3d dosya formatlarını okuyacak kütüphane lazım.

3d ses olmadan oyun olmaz...:)

networking, kaynak yönetimi, parçacık sistemi ( patlamalar, ışıldamalar, duman vs ..)

vs ...

bütün bunlarla ayrı ayrı uğraşmamak için game engine kullanmanda fayda var.
http://www.devmaster.net/engines/

matematiksel grafikler dışında , opengl pek bir işine yaramaz.

eGeMx
11/10/2006, 22:44
Opengl kullanabilmen için uzay geometrisi gibi derslerden azçok anlıyor olman gerekir. Gerçi bunları azçokta gördüğünü zannediyorum.. Bunlar dışında c++ ta opengl kullanmak için pekçok program vardı ve herbiride birbirinden değişikti.. Bunların içinden çıkamadığım için, incelemek üzere oyun motoru indirmiştim.. Orada bayağı bir tutorial şeklinde bilgiler mevcuttu..
Fakat sonrasında javaya geçtim. Çünkü multiplayer oyun yapmak istiyorum ve javanın önünün daha açık olduğunu savunanlar çok fazla. Eğer sende java öğrenmek istiyorsan neden c++ öğrenmek istediğini anlamış değilim açıkcası.
Mail adresini yazarsan yada bana mail atarsan elimde geldiğim yere kadar olan dosyaları yolluyabilirim sana. Şimdiden iyi çalışmalar. :ginginn:

yesilvadi
11/10/2006, 23:49
bilgisayar mühendisliğinde son sınıfı okuyorsun ve grafik dersi senin isteğine bağlı; oldukça ilginç bir durum. keşke ben de sevmediğim dersleri almadan halledebilseydim...

neyse...

evet opengl öğrenmek istiyorum diyorsun ki bunu şöyle düzeltsek daha iyi olur:

oyun (veya ileri grafik işlemleri ile ilgili) programlama konusunu öğrenmek ve bu konuda iyi olmak istiyorsun.

önce şunu söylemekte fayda var; oyun programlama çok kapsamlı bir konudur, mr1yh1 arkadaş olası altbölümlerinden bir kısmını yazmış sağolsun ve bu alt bölümlerin her biri oldukça detaylı konulardır tek başına hepsini başarabilmen çok çok zor.

söylediklerinden anladığım kadarıyla sen bunun sadece güzel grafikler oluşturma kısmıyla ilgileniyorsun ki bu noktadada şunları bilmen gerek:

eğer ileri seviye oyun programlama ile ilgileneceksen opengl, directx, sdl, openal, fmod gibi gelişmiş kütüphaneleri bilmen ve kullanman gerek. bunların oratk özellikleri c/c++ ile yazılmış olmaları ve yine bu dillerle çok iyi sonuç üretmeleri. bunların hepsini diğer dillerle de kullanabilirsin ama iyi verim alamazsın, ufkun yeterince dar olur ve keyif vermez.
işte bu yüzden c/c++ dillerini öğrenmek ve kullanmak çok önemli. eğer bu işi iyi yapan birine sorarsan da sana gerkeli de diyecektir.

opengl grafik programlama için yeterli araç değildir, yani opengl öğrendim bitti olmuyor.

opengl'in mesela directx ten en belirgin farkı modüler olması ve yeterince basit olmasıdır (bu yeteneğinin de az olası anlamına gelebilir belki) ama bu basit opengl fonksiyonlarını anlaman için bile biraz matemati, analitik geometri bilmen gerekiyor yoksa çok yetenekli bu fonksiyonlar senin için hiçbir şey ifade etmez.

bu yüzden senin opengl ile c++ mı öğrenmeliyim sorusu yerine matematik de mi öğreneceğiz diye sorman gerekiyor. eğer sorarsan ben bu soruya evetcevabını verir ve o grafik dersini almanı ısrarla tavsiye ederdim.

gelelim asıl soruya; opengl öğrenmek zor mu? hayır zor değil. son sınıf bilgisayar mühendisliği öğrencisisin, iyi derecede java biliyorsun, mühendislik eğitimin gereği matematik konusunda iyi bir alt yapın var. kim tutar seni. endişe etmene gerek yok, yeterince basit ancak çok çalışma gerektiren bir alan grafik programlama. ilk yaptığın şeyler hiçbir şeye benzemez, birtürlü kafandaki geometriyi programda şekillendiremezsin ama çalıştıkça hepsi olur.

eğer amacın doğrudan oyun yapmak ise (yani grafik kütüphanesi de neymiş, matematik de ne ki, bi mario yapayım yeter diyorsan) kolaydan zora bir sürü oyun motoru veya kendi oyununu kendin yap tarzı şeyler var.

başlamışken bişiler söyleyeyim; oyun motorları profeyonel anlamda çok kullanılan, çok faydalı şeylerdir. örneğin half life oyunu half life oyun motoru ile yazılmıştır yani baştan sona c kodu değildir. sen de örneğin 3d game studio ile onun dilini kullanarak gayet kaliteli oyunlar yazabilirsin. ancak bilgisayar mühendisi olarak belki daha meselenin detayına inip oyun yazmak istiyor olabilirsin. işte o zaman c++

elix
11/10/2006, 23:52
Eğer sende java öğrenmek istiyorsan neden c++ öğrenmek istediğini anlamış değilim açıkcası.


aklımdakileri net bir şekilde belirteyim;
ben zaten javayı bırakıp c++'la uğraşmak istemiyorum, attan inip eşeğe binmek gibi olacağını tahmin ediyorum (kodla uğraşma açısından), ama ben ne kadar 3d programlama için javada ısrar ettiysem bugüne kadar hep opengl'in c++ ile en fazla uyumlu olduğunu söylediler durdular

elix
12/10/2006, 00:09
bu yüzden senin opengl ile c++ mı öğrenmeliyim sorusu yerine matematik de mi öğreneceğiz diye sorman gerekiyor. eğer sorarsan ben bu soruya evetcevabını verir ve o grafik dersini almanı ısrarla tavsiye ederdim.


derste ağırlıklı matematik gösteriliyormuş derken matematikle uğraşmak istemediğimi kastetmedim, opengl pek fazla öğretmiyor bundan huzursuz olduğumu belirtmek istedim.

mario tarzı oyun yazmak ise, javada alasını yazarım, neyse abartmayım ama o tip işler sorun değil.
oyun programlama yazmışım ama genelde o tabir yerine 3d programlama tabirini kullanmaya dikkat ederdim bu sefer dikkat edememişim kusura bakmayın.
yani maksad oyun programlama değil, 3d işleme, ve bunun için de yeşilvadi senin dediğin gibi detaylara inmeyi düşünüyorum. zaten diğer türlü çok sarmaz heralde.
bir de vurgulanması gereken bişey, geri çekilip biraz geniş bakarsak; bu işin üniversitesinde okuyoruz, bu ülkede bilimin gelişmesine birinci derecede mükellef bizleriz aslında. sürekli başkaları tarafından yazılan araçları kullanarak standart şeyler yapmanın ülkeye bilimsel anlamda hiçbir getirisi yok, eğlence amaçlı yapılacak işler nazarıyla bakılmalı onlara, liseli çocukların eğlencesi...

eGeMx
12/10/2006, 08:46
sürekli başkaları tarafından yazılan araçları kullanarak standart şeyler yapmanın ülkeye bilimsel anlamda hiçbir getirisi yok, eğlence amaçlı yapılacak işler nazarıyla bakılmalı onlara, liseli çocukların eğlencesi...
Tek başına her işin üstesinden gelmen zor olur fakat eğer aranıza birkaç kişi daha katılırsa ve gerçekten istiyorsanız ve bu cümleyi kurabiliyorsan, hiçbir güç sizi durduramaz. Tabi yurtdışında çalışma fikri dışında...

Akın Öcal
12/10/2006, 11:40
Oncelikle bu isler icin "bilim" kelimesini degil de "mühendislik" kelimesini kullanmamiz daha dogru olacak diye düsünüyorum.

İleri düzeyde java (burda kütüphaneleri mi dili mi kastettigini anlayamadim) biliyor olman senin tarif ettigin sekilde hardcore oyun programcilginda ( eger dogru anladiysam) hic bir fayda getirmeyecektir. Amatör/hobicilik disinda oyun programlama ile ilgileneceksen native kod yazmak zorundasin , bu sart mdir peki -> evet sartdir (mobil oyunlar ya da sparc makineler haric), dedigin gibi java dan c++ a gecis at dan inip esege binmek gibi ama o essek native oldugu icin sistem yazilimlari onda yapiliyor , java ise cok otomatik vites ve kullanimi hos ama dehset sekilde kaynak yiyen bir sanal makinenin ardinda... Özetle agir grafikler/efektler üretimi sirasinda makinenin instruction setine yakın yazmak secenek degildir bir ön-sartdir... ( Cok daha oteye gitmek istiyorsan kullandigin platformun instruction setlerini de biliyor olman lazim , acik-kaynakli yazilimlari incelersen bir cok inline assembly cagrisi ile karsilacaksin )

"Sürekli başkaları tarafından yazılan araçları kullanarak " sözüne gelince , en azindan daha iyi kütüphaneler hatta oyun motorlari cikarma noktasina kadar en azindan bir opengl i ve acik-kaynak motorlari yutmus olman gerekir diye düsünüyorum. Ve bir core cikaracaksan üstünde bulundugun platformunun assembly sine yani instruction setine de hakimiyet kurmalisin. Fakat bu noktada hangi kütüphaneden baslanmalidir konusuna gelince bir endüstri standardi oldugu icin opengl kesinlikle en iyi secim olacaktir.

Fakat yukardaki cevaplar gibi , en temel olay burda matematik ve fizik altyapisi. Ozellikle analitik geometri,matrisler ve baslangic icin fizik kural/yasalari burda on plana cikiyor.