Önceki başlık :: Sonraki başlık |
Yazar |
Mesaj |
wisecode_g
Kayıt: Jul 29, 2005 Mesajlar: 17 Nereden: istanbul
|
Tarih: Sat Sep 24, 2005 2:19 am Mesaj konusu: OpenGL uygulamalarım neden hızlı çalışıyo?? |
|
|
OpenGL de derlediğim uygulamalar çok hızlı çalışıyor bunu düzeltmenin bir yolu varmı acaba? |
|
Başa dön |
|
|
Black_Knight
Kayıt: Oct 23, 2002 Mesajlar: 286 Nereden: İstanbul/İzmir
|
Tarih: Sat Sep 24, 2005 10:28 am Mesaj konusu: |
|
|
Ekran karti monitor ayarlarindan wait for vertical synci(vsync) aç boylece ekran monitorun tazeleme orani kadar cizilir her saniye 60,70,75,80 falan gibi bir rakam o zaman cok hizli olmaz.
Olayi tam cozucem dersen time based movement yapman lazim. |
|
Başa dön |
|
|
madprogrammer
Kayıt: Jun 10, 2004 Mesajlar: 290 Nereden: İstanbul // Üsküdar
|
Tarih: Sat Sep 24, 2005 11:05 am Mesaj konusu: |
|
|
iki basit çözümü var kod bazında ya Time Based Movement olayını kullanacaksın ya da PFNWGLEXTSWAPCONTROLPROC extensionını kullanacaksın bu sayede program içinden monitörün vsync olayını kontrol edip vsync değerini vsync kullanma, 60 fps ve 30 fps şeklinde belirleyebilirsin hatta bak örneği de vereyim
Kod: |
typedef void (APIENTRY *PFNWGLEXTSWAPCONTROLPROC) (int);
typedef int (*PFNWGLEXTGETSWAPINTERVALPROC) (void);
PFNWGLEXTSWAPCONTROLPROC wglSwapIntervalEXT = NULL;
PFNWGLEXTGETSWAPINTERVALPROC wglGetSwapIntervalEXT = NULL;
// ardından uygulamayı başlatırken çağrılan fonksiyon içinde bunları yaz
wglSwapIntervalEXT = (PFNWGLEXTSWAPCONTROLPROC)wglGetProcAddress("wglSwapIntervalEXT");
wglGetSwapIntervalEXT = (PFNWGLEXTGETSWAPINTERVALPROC)wglGetProcAddress("wglGetSwapIntervalEXT");
// ardından yine init fonksiyonu içinde bunu şu şekilde kullan
// 0 = vsync'yi devre dışı bırak, 1 = 60 fps, 2 = 30 fps
wglSwapIntervalEXT(0); // 0 yerine 1 veya 2 de yzabilirsin
// hepsi bu kadar gayet basit ha sakın glext'i dahil etmeyi unutma projene.
|
hadi kolay gelsin umarım yardımcı olmuştur |
|
Başa dön |
|
|
madprogrammer
Kayıt: Jun 10, 2004 Mesajlar: 290 Nereden: İstanbul // Üsküdar
|
Tarih: Sat Sep 24, 2005 11:06 am Mesaj konusu: |
|
|
bu arada yanlış anlaşılmasın ben 60 ve 30 fps'yi örnek olarak verdim aslında 60 yerine monitör yenileme hızı ve 30 yerine de bu hızın yarısı olacaktı |
|
Başa dön |
|
|
wisecode_g
Kayıt: Jul 29, 2005 Mesajlar: 17 Nereden: istanbul
|
Tarih: Sat Sep 24, 2005 11:25 am Mesaj konusu: |
|
|
tşkler şimdi olayı çözmek için biraz kasayım |
|
Başa dön |
|
|
wisecode_g
Kayıt: Jul 29, 2005 Mesajlar: 17 Nereden: istanbul
|
Tarih: Sat Sep 24, 2005 12:06 pm Mesaj konusu: |
|
|
wglSwapIntervalEXT = (PFNWGLEXTSWAPCONTROLPROC)wglGetProcAddress("wglSwapIntervalEXT");
wglGetSwapIntervalEXT = (PFNWGLEXTGETSWAPINTERVALPROC)wglGetProcAddress("wglGetSwapIntervalEXT");
kısmını tam olarak nereye koyacam acaba? nereye koyduysam hata veriyo.. compile oluyo ama exeyi çalıştırırken geçersiz işlem yürütüyo acaba bi yerde hata mı yaptım?? |
|
Başa dön |
|
|
wisecode_g
Kayıt: Jul 29, 2005 Mesajlar: 17 Nereden: istanbul
|
Tarih: Sat Sep 24, 2005 12:10 pm Mesaj konusu: |
|
|
tmm oldu..
konu kapanmıştır tşk ederim arkadaşlar.. |
|
Başa dön |
|
|
|