bi de bir şey sorayım opengl örneğindeki texture.dat ve vector.dat'ı nasıl elde ettin? ekonomik (yani az zaman alan) bir yöntemin var mı? kullandığın başka bir program ? ,kendin bir editör mü hazırladın yoksa direk binary dump falan mı?
hocam ufak bi iki tane program yazdım 3ds dosyalarının adını yazıyorsun bi txt dosyasına, bunları açıp flexible vertex formatına çevirip arka arkaya tek bi dosya içine kaydediyor her çevirip kaydettiği dosyayının adresini veriyor bunu kodda kullanıyorsun basit bişey yani . Aynı işi resimler için yapan ufak bi program daha var.
@levent:
Biraz teknolojiden uzak kalmak zorunda kalinca foruma daha nadir katilabiliyorum Kodu direk OpenBSP projemin obspMath.pas dosyasindan aldim.Varsayimsal bir degisiklikle senin koda adapte ettim.Tabii delphi ortami olsa asil calisan "son" kodu gonderebilirdim.
Boyutu delphide kismanin bi yolu su olabilir.Ne yaparsak yapalim System.pas tan kurtulamiyoruz.System.pas ta tabiki delphi optimizasyonundan geciyor.Yani kullanmadigin kodlari olabildigince eliyor.Ama System.pas cok genel kodlar icerdigi icin ayni isi yapan ozel bir koddan cok daha fazla yer kapliyor.Kaba bi ornek vermek gerekirse: Move komutu normalde bellek "tasimaya" yarar ve guvenli bir sekilde overwrite ozelligi var.Ama buna gerek yoksa bir api kullanmak (nispeten daha az kod olacaktir) yada sadece bellek "kopyalamaya" (tasimaya degil) yonelik bir kod daha az yer tutacaktir.Tabi bu da ebleda nin yapmak istedigine biraz ters olur.
Diger konuysa C/C++ -> Delphi cevrimindeki gercek bir sorun olan pointer sorunundan bahsetmissin.Gerci sagolsun devreci insani bunalima sokan karisik yapidaki pointer kullanim örnekleri kullanmamis.Dynamic arrayi kucuk kod yazmak istiyorsan onermiyorum.Zaten sen de nedenini anlamis gorunuyorsun
*float x;
gibi bir ifadeyi delphiye su sekilde cevirebilirsin (gerci sende biliyorsun ama)
Alıntı:
var x: ^Single;
(...)
x := ListeninBaslangicElemaninAdresi;
for i:=0 to n-1 do
begin
x^ := i * i;
inc(x);
end;
(...)
yada
Alıntı:
var x: ^Single;
(...)
x := ListeninBaslangicElemaninAdresi;
for i:=0 to n-1 do
PSingleArray(x)^[i] := i * i;
(...)
yada benim en sik kullandigim sekliyle
Alıntı:
var x: PSingleArray;
(...)
for i:=0 to n-1 do
x^[i] := i * i;
(...)
ebleda demiş ki:
Su da akilda tutulmalidir ki boyut ile hiz arasinda da direkt bir iliski yok.
Evet bu konuda cok haklisin.Guncel islemcilerin dokumante edilmeyen cok sayida gorunuste sacma optimizasyon yontemleri var.Cok bilinen ve gizli olmayanlar: Unrolled loops, hardware prefetch
ebleda demiş ki:
Koddaki 512 olayi, allignmenttan kaynaklaniyor. Onu degistirebilirsiniz.
Su meshur CIH (cok bilinen adiyla cernobil) virusu gundemdeyken exe headerlarini inceleme geregi duymustum.Bildiginiz uzere cih virusu bu header daki bos alanlara kendi kodunu yaziyordu.Header in bir bildirim alaninda exe boyutuyla ilgili bi bilgi vardi ve bu bilgi hep exelerin boyutunun 512 nin katlari seklinde olacagina isaret ediyordu.Hem isletim sistemlerinin hemde compiler larin bunu gozardi ettigini goruyoruz.
@devreci:
Stack uzerinden islem yaptigim icin kodda bi hata yok.Calisan bi uygulamadan aldim.Ama dedigim gibi fonksiyon parametrelerinin koda verilis seklinde bi sorun var o kadar.
stroma demiş ki:
...asm nin kötülüğünden, aslında o kodların da ekran kartında derlendiğinden, direkt asm nin farklı hardware ler için yapılmış optimizasyonların dışında kalıp performansı düşüreceğinden...
Ne diyim sana? Yine beni can damarimdan yakalamissin Sen de bilirsin daha dune kadar shader asm sini ovup duruyordum.Ama gerek yeni cikan ekran kartlarinin gercekten cok hizli olusu gerek debug etmenin zorluklari ve gerekse soyle bir bakista kodun ne ise yaradigini cozememek gibi zorluklarindan dolayi asm kullanmak artik bana gereksiz geliyor.Eskiden Cg de yaz, ARB olarak derlettir, kodu optimize et, uygula seklinde bi yontem kullaniyordum.Sonradan eklenen ve donanima ozgu asm komutlari da arttikca bu yontem bana gore pek de iyi degil artik.Cozum Half-Life2 yapimcilarinin dedigi gibi "yuksek seviyeli dil kullanin!" da.Zaten driver lar gunden gune daha da optimize hale getiriliyor.Cg ise senin de dedigin gibi ATI de sorunlu.Sushi engine nin cozumu de iyi gibi.Ortaya HLSL&GLSL karisimi ortak bir dil cikarip bunu direk cevirip yapmak bence mantikli.Tabi iki platformu birden hedeflemiyorsaniz cok gereksiz.
levent demiş ki:
window'u kodla mı oluşturmak daha ekonomik yoksa resource olarak mı?
Kayıt: Mar 13, 2003 Mesajlar: 188 Nereden: İstanbul
Tarih: Wed Dec 07, 2005 10:32 am Mesaj konusu:
@osman:
cevaplar için çok sağol, ve pointer allocation kodlarının her an başucumda olacağını bil. o kadar işime yarayacaklar yani. belki de geçen sene yarıda bıraktığım 8086 emulator projeme bile dönebilirim.
system.pas konusunda bir takım *naçizane* optimizasyonlarım mevcut, dediğin gibi overload'ları vs kaldırıp sanırım 1kb kadar indirebildim. ayrıca cevabını gördükten sonra yaptığım kısa bir google araştırması bana ilginç ve faydalı bir kaynak buldurdu. eminim senin ve delphi kullanan herkesin işine yarayacaktır.
Key Objects Library denen bu derleme aşağı yukarı delphinin tüm unitlerine belirli optimizasyonlar getiren bir grup psikopat rusun çalışması.
örnekler çok güzel ama bi eksik var.
Bence yazdıgınız kodlara açıklama (comment) eklemek lazım.
Böyle yaparsanız süper olur herkes daha rahat bir şekilde faydalanır.
çünkü algoritmanın neresinde ne yapıldıgını herkes anlamıyor.
Açıklamalı versiyonları bekliyoruz.
Tüm saatler GMT +2 Saat Sayfa Önceki1, 2, 3, 4, 5, 6, 7
7. sayfa (Toplam 7 sayfa)
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