Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - glVertex Varyasyonları
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

glVertex Varyasyonları

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> OpenGL, DirectX
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
AhmedHan



Kayıt: Jun 01, 2005
Mesajlar: 7

MesajTarih: Fri Oct 14, 2005 2:27 pm    Mesaj konusu: glVertex Varyasyonları Alıntıyla Cevap Ver

glVertex() 'in sayısız versiyonu mevcut :
Alıntı:
glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d,
glVertex3f, glVertex3i, glVertex3s, glVertex4d, glVertex4f,
glVertex4i, glVertex4s, glVertex2dv, glVertex2fv, glVertex2iv,
glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv,
glVertex4dv, glVertex4fv, glVertex4iv, glVertex4sv

Benim satın aldığım OpenGL kitabı sadece glVertex3f() fonksiyonunu kullanmış.

400x400 'lük bir ekranda çalıştığımızı düşünelim. (0, 0) noktası ekranın alt sol köşesi olsun. (100, 50) 'e bi nokta koymak için glVertex3f(-0.5f, -0.25f, 0.0f); fonksiyonunu çağırırız. Buraya kadar herşey normal...

Bir 100x100 'lük .bmp dosyasını ekrana taşımak isteyelim. glVertex3f() fonksiyonuyla bunu gerçekleştirmek, fazladan bir dönüşüm fonksiyonu kullanmadan, imkansızdır. Çünkü ekranın üzerindeki koordinatlar INT tanımlıdır. Fakat glVertex3f() fonksiyonu sadece GLfloat tip parametre kabul ediyor. Yani işler karışıyor.

glVertex3i(); fonksiyonunu kullanmayı denedim, fakat ekranda birşey göremedim. Aranızda bu fonksiyonun nasıl kullanıldığını bilen var mı?
Ekranda herhangi bir konuma vertex yerleştirmek için INT tip parametre kabul eden bir fonksiyon mevcut mu?

Örnek : glVertex??(100, 50); ya da glVertex??(100, 50, 0);
Başa dön
Kullanıcı profilini gör
stroma



Kayıt: Mar 31, 2003
Mesajlar: 169

MesajTarih: Fri Oct 14, 2005 3:03 pm    Mesaj konusu: Alıntıyla Cevap Ver

vertex fonksiyonları o anki belirlenen uzayda çalışır yani senin birim vektörün identity matrix şeklinde ayarlanmış ise normal bir 3 boyutta çalışıyorsun ancak scalef() gibi fonksiyonlar ile uzayın birim vektörlerini değiştiriyorsun ve vertexler farklı yerlerde görünüyor. yani senin fonksiyon değil uzay değiştirmen gerekiyor. orthographic uzayda 2 boyutlu uzayda gibi çalışabilirsin. bunu yapmak için Set2D() ve Set3D() gibi fonksiyonlar kullanırsak:
Kod:

vec2 viewport = ekran boyutları;
void Set2D() {
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
   gluOrtho2D(0.0f, viewport.w, 0.0f, viewport.h);
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();
}
void Set3D() {

   glPopMatrix();
   glMatrixMode(GL_PROJECTION);
   glPopMatrix();
}

bu iki kod arasında:
Kod:

int Height = viewport.h;
glBegin(GL_QUADS);
   glVertex2f(x,   Height - y-h);
   glVertex2f(x+w,   Height - y-h);
   glVertex2f(x+w,   Height - y);
   glVertex2f(x,   Height - y);
glEnd();

şeklinde bir kod yazarsak ekrana (x,y) pozisyonunda (w,h) boyutlarında bir kare çizmiş olursun,en basit şekli bu; sanırım yanlış bişey yok.
texture koordinatlarını çıkartmak sana kalsın.. Wink
kolay gelsin..
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
dahaka



Kayıt: Jun 02, 2005
Mesajlar: 122
Nereden: Bursa

MesajTarih: Fri Oct 14, 2005 3:05 pm    Mesaj konusu: Alıntıyla Cevap Ver

opengl yi bilmem ama bu sitede http://www.koders.com bir sitenin adı geçmişti güzel bir site programcılar için süper bir arama motoru
bilmiyorum işine yarar belki çıkan sonuçlar
Başa dön
Kullanıcı profilini gör MSN Messenger
madprogrammer



Kayıt: Jun 10, 2004
Mesajlar: 290
Nereden: İstanbul // Üsküdar

MesajTarih: Fri Oct 14, 2005 3:20 pm    Mesaj konusu: Alıntıyla Cevap Ver

öncelikle f -> float, i -> int, d -> double demektir. yani çağırdığın glVertex?? fonksiyonundaki son harf i ise alacağı değerler integer olacaktır d ise double f ise float. buraya kadar herşey tamamsa glVertex3i'yi neden çalıştıramadığın hakkındaki fikrimi beyan edeyim. Öncelikle eğer glVertex3f'e verdiğin değerlerle aynısını veriyorsan glVertex3i'ye bir warning gelmeli zaten derleme sırasında ya da direk bir error cannot convert from double to GLint tarzından. şimdi integerlar tam sayılardır 1 3 4 5 gibi integerlar hiçbir zaman virgüllü sayı değerleri alamazlar 3,4 5,6 gibi bu sebeptendir. son olarak 0.5f gibi bir sayıyı direk integerda kullanamazsın sonundaki f bunun bir float olduğunu gösterir yani C++'ın float'u double'dan ayırması için kullanılan bişi.

Gelelim şu resim bastırma olayına. Örnek kod vereyim istersen inceleyip çözmeye çalış çözemezsen seve seve anlatırım yeter ki sor...

Kod:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
   
glOrtho(0, 400, 400, 0, -1, 1);
//ortografik mod yakın = -1 ve uzak = 1
//bu sayede bire bir bir pencere koordinat
//koordinat sistemin olur ancak y ekseni opengl
//koordinat sistemi gereğince tam ters bir
//şekilde çalışır mesela gdi'da 320 200 bir
//ekranda 0 0 koordinatlarında bulunan bir
/obje opengl'de ortografik mod -1 ve 1 ken 320 200 pozisyonlarındadır
//yalnız dikkat gdi objenin sol üst köşesini 0 0 kabul eder fakat opengl
//objenin sol alt köşesini 0 0 kabul eder bu durumda 320 200 deki bir
//obje ekran dışına çıkacaktır o yüzden y'den objenin yüksekliği kadar
//çıkartman gerekir bu durumda 320 200 bir ekranda gdi'ın 0 0'ında
//ogl'de bu koordinatlar 320 200-objHeight olacaktır
   
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glDisable(GL_DEPTH_TEST);

glBindTexture(GL_TEXTURE_2D, id);
glBegin(GL_TRIANGLE_STRIP);
      
   glTexCoord2i(0,1); glVertex2i(100, 200);
   glTexCoord2i(1,1); glVertex2i(228, 200);
   glTexCoord2i(0,0); glVertex2i(100, 72);
   glTexCoord2i(1,0); glVertex2i(228, 72);

glEnd();
glEnable(GL_DEPTH_TEST);

glMatrixMode(GL_PROJECTION);
glPopMatrix();

glMatrixMode(GL_MODELVIEW);



işte bu kadar umarım işini görür bu arada kaplama bind etmeyi falan öğrenmişsindir kaplamayı bind et o id'yerine senin kaplama id'n gelecek.
Hadi kolay gelsin
Başa dön
Kullanıcı profilini gör
hakanfatih



Kayıt: Oct 13, 2005
Mesajlar: 47
Nereden: niğde

MesajTarih: Fri Oct 14, 2005 7:49 pm    Mesaj konusu: Alıntıyla Cevap Ver

ya arkadaşlar bu vertx nedir ne işe yarar bir yazınya site sahibi bir dersler konusu yapsın bizde öğrenelim sizin yazdıklarınızı okuyunca kafam şişiyor yaa Rolling Eyes
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> OpenGL, DirectX Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.107 Saniye