[GiM logo] gim.org.pl is down || odświeżony jogger (v.0.4) GiMa

Dziś będzie krótko, jak zacząć programowanie w OpenGLu w D.

Najpierw małe streszczenie z tego co było na warsztatach.
Na trzecich warsztatach D było więcej o klasach, dziedziczeniu, de/kon-struktorach, statycznych de/kon-struktorach, przeciążaniu metod, properties (nie, podobnie jak python nie lubimy setterów i getterów :P, atrybuty/własności w D są banalne do implementacji o czym wspomniałem w pierwszym wpisie). Dalej, o klasach zagnieżdżonych, interfejsach, invariantach (niezmiennikach) obiektów klas, atrybucie scope dla klas, przeciążaniu operatorów, rzutowaniu. uff sporo prawda? :)
Na czwartych warsztatach było natomiast o róznych rodzajach tablic w D o wycinkach tablic i o operatorze konkatenacji, następnie początek zabawy, czyli pierwszy program w OpenGLu.

Zanim jednak stworzymy nasz super ekstra pierwszy projekt, musimy przygotować sobie środowisko pracy :). Zakładam, że tak jak w drugim wpisie o D, masz już zainstalowany kompilator DMD z tango, do tego zainstalowany rebuild.
Potrzebny nam będzie Derelict, czyli zestaw bindingów dla D do różnych (głównie 'multimedialnych' (nie cierpię tego słowa ;)) bibliotek C. Do jego instalacji użyjemy dsssa (można odpalić go z konta użytkownika, wówczas derelict zostanie zainstalowany w podkatalogu w $HOME, jednak instalując jako administrator, zainstalujemy go 'globalnie'):

  • # dsss net install derelict
  • # dsss net install derelictsdl
  • # dsss net install derelictgl

Dsss oidp zapyta najpierw o wybór mirrora, następnie ściągnie za nas, skompiluje i stworzy potrzebne biblioteki, oraz zainstaluje wybrane projekty.
Jeżeli wszystko się powiodło i mamy już dsss'a możemy przystąpić do napisania pierwszego programu. Oto example.d:

  1.  import derelict.opengl.gl;
  2.  import tango.io.Stdout;
  3.  
  4.  void main()
  5.  {
  6.     try {
  7.       DerelictGL.load();
  8.       Stdout ("Successfully loaded the OpenGL shared library.").newline;
  9.     } catch (Exception e) {
  10.       Stdout ("Could not load the OpenGL shared library.").newline;
  11.     }
  12.  }

Plik wrzucamy do jakiegoś katalogu, w tym samym katalogu tworzymy prosty plik dla dsssa, mianowice dsss.conf:

  • [example.d]
  • target=example
  • buildflags=-lldl

-ll jest to flaga dla dsss'a, która sprawi, że przekaże on podaną bibliotekę do linkera, w tym przypadku libdl, potrzebną do dynamicznego ładowania bibliotek.
Teraz wystarczy jedynie:

  • dsss build

I jeżeli mamy potrzebne biblioteki, to dsss powinien skompilować naszą aplikację. Kod jest wzięty z pierwszego tutoriala ze strony dmedia i przerobiony, żeby działał z tango zamiast z phobosem (czyt: zamiana writefln na Stdout ;)).
Polecam zapoznanie się z pozostałymi Tutorialami ze strony dmedia.
Dostosowanie ich do tango nie powinno nastarczyć większych trudności. Wywołanie toStringz można usunąć i dodać na końcu ciągu "\0", lub napisać własną krótką funkcje np taką:

  1.   char[] toStringz(ref char[] str) { return str ~= "\0"; }

Nie testowane, ale chyba ok ;).
Przykłady znajdują również na slajdach z czwartych warsztatów team0xf.

P.S. Blog najprawdopodobniej w najbliższym czasie zostanie mocno zaniedbany, a wpisy jeśli się będą pojawiać to sporadycznie, z tej prostej przyczyny, że nie mam czasu :]

catz: [kom.puterowe] [programowanie w D] [Techblog]
tagz: [D] [D programming language] [OpenGL] [SDL] [język D] [programowanie D]
dnia środa, 28 listopad 2007, 015223 by Michał 'GiM' Spadliński

Komentarze:

Proszę wpisy pisane po angielsku komentować również w tym języku.

A są bindingi do 'suchego' SDL'a?

dnia środa, 28 listopad 2007, 185345 by pecet

Tak, zajrzyj na stronę derelicta:
http://www.dsource.org/projects/derelict

dnia piątek, 30 listopad 2007, 074407 by GiM

..tożsamość..:
..meritum..:
..lokum..:
Wpisz kod:code