Forum: SDL RSS
sdl2d GitHub'da...
sdl2d on the GitHub...
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1881 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: sdl2d GitHub'da...
Merhaba,

Hesaba göre %50'si tamam ama uğraşmak istemediklerimi (örn. devasa OpenGL kütüphanesini!) saysaydım herhalde %10'u bitmiş olmalı. Ancak üç temel bölüm (Basic, Input, Video) dikkate alınırsa neredeyse bitmek üzere...:)

https://github.com/salihdb/sdl2d/

İmece usulü OpenGL'ye de el atsak mı? Belki de hiç gerek yok sonuçta SDL işlevleri üzerinden kullanıyoruz. Ama belki de bir gün gerekebilir.

Dip Not: Biraz amatörlüğüme geldi sdl2d içinde bir sdl2d daha oluşturmuşum.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #2
Üye Ock 2012 tarihinden beri · 1881 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Depoyu henüz yeni güncellemişken (bence bunu adet haline getirmemeliyim, gün aşırı güncelleme yeter!) ek düzenlemeler yaptım. Tabi bu Ali ve Erdem sayesinde şu başlıkta gerçekleşti. Yoksa hala "SDL_TimerCallback is used as a type" hatasına kafa yoracaktım...:)

Son durum şöyleydi ve yüzde 99 ile 98'ler tamamına erdi:

Basics
  - Init                        : 100% (0/9) Unclassified...
  - Include                     :  50% (8/9) Macros
  - Error                       : 100% (3/9)
  - Timer                       :  99% (9/9) SDL_TimerCallback
  - RWops                       :  50% (2/9)
  - Clipboard                   :      merge
  - Log                         :       skip
  - Assertions                  :   0% (1/9)
  - Version                     :       skip
  - Quit                        :      merge
Input Events
  - Events                      :  99% (2/9) SDL_EventFilter
  - Keyboard                    : 100% (5/9)
  - Keycode                     : 100% (6/9)
  - Scancode                    : 100% (8/9)
  - Gesture                     : 100% (1/9)
  - Mouse                       :   0% (7/9)
  - Touch                       : 100% (9/9)
  - Joystick                    :       skip
  - Input                       :      merge
Video
  - Video                       :  98% (9/9) Macros
  - Render                      : 100% (6/9)
  - Blit                        :  35% (1/9) Macros
  - Pixels                      :  80% (4/9) Macros
  - Blendmode & Shape           :      merge
  - Rect                        :  98% (5/9) Macros
  - Surface                     : 100% (7/9)
  - OpenGL                      :       skip
  - SWM                         :       skip


Ancak şüpheli(emin olmadığım) durumlar var! Örneğin stdinc.d dosyasına birleştirdiğim SDL_quit.h içindeki bir macro'yu Derelict functions.d içinde şu şekilde uyarlamış:

// SDL_quit.h
nothrow bool SDL_QuitRequested()
{
    SDL_PumpEvents();
    return SDL_PeepEvents(null, 0, SDL_PEEKEVENT, SDL_QUIT, SDL_QUIT) > 0;
}

Bu gayet basit ve hızlı bir çözüm olmuş; benim gibi uğraşmamış...:)
bool SDL_QuitRequested() {
  SDL_PumpEvents();
  if(SDL_PeepEvents(null, 0, SDL_eventaction.SDL_PEEKEVENT,
                             SDL_EventType.SDL_QUIT,
                             SDL_EventType.SDL_QUIT) > 0) {
    return SDL_bool.SDL_TRUE;
  }
  return SDL_bool.SDL_FALSE;
}//*/
  /* SDL_bool SDL_QuitRequested(void) 
   * Returns SDL_TRUE if SDL_QUIT is queued or SDL_FALSE otherwise.
   * Source: http://wiki.libsdl.org/moin.cgi/SDL_QuitRequested
   */
Ben ise Source'da adresini verdiğim sayfaya dayanarak (ki bu ikinci düzeltmem!) yukarıdaki gibi yaptım. SDL_bool, aşağıda göreceğiniz üzere bir struct içinde iki üyeli enum var. Ancak D işlev değerini bool olarak döndürmemi istiyor. Bir yerde yanlış mı yapıyoruz?
extern(C) struct SDL_bool {
  enum {
    SDL_FALSE = 0,
    SDL_TRUE = 1
  }
}
Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 901 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bence kod içinde çalışıyorsa hiç problem değil.

#define SDL_QuitRequested() \
(SDL_PumpEvents(), SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUITMASK))

Konuştuğumuz C makrosu da bu  :-)
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
Salih Dinçer:
    return SDL_PeepEvents(null, 0, SDL_PEEKEVENT, SDL_QUIT, SDL_QUIT) > 0;

Tabii ki öyle olmalı. :) Diğer konuda dilimin ucuna kadar gelmişti de söylemekten vazgeçmiştim. Mantıksal ifadelerin açıktça false veya true olarak yazılmaları da kişisel bir konu olarak görülüyor. Bazı arkadaşlarım şöyle yazmakta ısrarcılar:

    if (birMantıksalİfade == true)

Oysa birMantıksalİfade zaten bir mantıksal ifade olduğundan şöyle olmalı:

    if (birMantıksalİfade)

Çünkü bu işin sınırı yok. Uzun yazanlar neden eşitlik karşılaştırmasının sonucunu da true ile karşılaştırmıyorlar?

    if ((birMantıksalİfade == true) == true)

:)

Salih, sözüm sana değil; kodun hatırlattığı bir şeyi yazdım.

SDL_bool konusunda da C'nin ve C++'ın yine önceki konuda bahsettiğim enum isim alanlarıyla ilgili yetersizliğinin üstesinden gelmek istemişler.

Bence bu sorunu çözmek için değerlerin türlerini gözden geçirebilirsin. Örneğin sanırım SDL_FALSE gibi değerler int'tir. Bir çok çözüm bulunabilir.

Ali
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1881 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bunları hatırlattığın iyi oldu hocam, sonuçta pratik olmak lazım...:)

Bu arada konuyla ilgili şeyi (artık struct mıdır yoksa enum mudur) denedim de üçü de çalışıyor! Hayret değil mi?
/*
alias int SDL_bool;
  enum {
    SDL_FALSE = 0,
    SDL_TRUE = 1
  }//*/
//*
  enum SDL_bool {
    SDL_FALSE = 0,
    SDL_TRUE = 1
  }//*/
/*
extern(C) struct SDL_bool {
  enum {
    SDL_FALSE = 0,
    SDL_TRUE = 1
  }
}//*/
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Az farklı iki tane daha:

enum SDL_bool : bool {  // <-- bool ile gerçekleştirilmiş
    SDL_FALSE = false,
    SDL_TRUE = true
  }
 
void main()
{
    auto b = SDL_bool.SDL_TRUE;
    assert(b);
}

struct SDL_bool
{
    enum SDL_FALSE = false// <-- Bu enum'lar "derleme zamanında sabit"
                             //     anlamında :). Karışıklık olmasın.
    enum SDL_TRUE = true;
}

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: SDL RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-05-27, 12:25:56 (UTC -07:00)