Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 12:34

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 74 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 15:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Genau das Tool meinte ich. Für den Einstieg bzw. schnelle Umsetzung von FF nach Shader ist dass Tool gut geeignet, allerdings wie gesagt für Lernzwecke, die Shader sind also so geschrieben dass man sie versteht, und nicht bis aufs letzte optimiert.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 16:04 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Sascha Willems hat geschrieben:
Sich seine eigene Beleuchtung im Shader zu schreiben ist da viel besser und flexibler. Wer sich ein wenig mit 3D-Grafik auskennt hat die Shadersyntax schnell drauf und kann innerhalb kürzester Zeit eigene Beleuchtungsmodelle implementieren.


mir geht es nicht ausschließlich um die syntax, sondern eher darum, wie man einen shader jetzt im programm einbindet.

aber du hast schon recht, diese vertex-beleuchtung is nich die beste


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 16:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Ich hab hier RenderMonkey rumliegen, damit lässt sich nach ein wenig Einarbeitungszeit ganz gut arbeiten.

@GlBegin/GlEnd: ich bin ehrlich gesagt auch kein Freund davon. Mir will es einfach nicht in den Sinn wieso ich erst expliziet etwas ankündigen muss anstatt gleich sagen zu können "zeichne hier und hier und hier nen Polygon". Das ist meiner Meinung nach für einen Anfänger auch einfacher, da er sich nicht erst mit all den GLBEGIN Modes auseinandersetzen muss.

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 17:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Evil-Devil hat geschrieben:
Ich hab hier RenderMonkey rumliegen, damit lässt sich nach ein wenig Einarbeitungszeit ganz gut arbeiten.

@GlBegin/GlEnd: ich bin ehrlich gesagt auch kein Freund davon. Mir will es einfach nicht in den Sinn wieso ich erst expliziet etwas ankündigen muss anstatt gleich sagen zu können "zeichne hier und hier und hier nen Polygon". Das ist meiner Meinung nach für einen Anfänger auch einfacher, da er sich nicht erst mit all den GLBEGIN Modes auseinandersetzen muss.


Hallo,

wo ist denn das Problem mit glBegin?
Ich finde glBegin eher genial, wie will man sonst ein Polygon mit einer variablen Anzahl von Eckpunkten, Farben, Normalen, Texturkoordinaten etc. zeichnen?
Eine einzelne Funktion, der man diese ganzen Daten als Parameter übergibt ist meiner Meinung nach ziemlich häßlich.
Ein Objekt würde eventuell noch infragekommen, aber dafür bräuchte man extra Speicherstrukturen (z.B. variable Listen ), ist auch nicht so schön.

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 19:43 
Offline
DGL Member

Registriert: Mo Nov 06, 2006 19:15
Beiträge: 172
Was das Problem mit glBegin() ist, wurde im Thread schon besprochen. Dazu zählen
- Overhead bei der Treiberentwicklung für mehrere "Pfade"
- glBegin() und was dazu gehört, lassen sich kaum auf moderner Hardware abbilden
- daher um Vielfaches langsamer und CPU intensiv
- eventuell möchte man Entwickler "umerziehen" performantere Möglichkeiten in Betracht zu ziehen, damit das Ansehen von OpenGL wieder hergestellt wird gegenüber Direct3D?

Wenn du mal mehr und mal weniger viele Vertices zeichnen möchtest - bitte nenne doch einen Anwendungsfall - kannst du zum Beispiel bei einem LOD-System verschiedene Index-Listen in deine Vertexdaten verwenden. Angenommen, du hast einen Zylinder mit 64 Seiten aus der Nähe. Dann zeichnest du in großer Entfernung mit einem glDrawElements Aufruf einfach eine Elementliste, die nur 8 Seiten zeichnet. Dafür brauchst du dann überhaupt keine CPU-Leistung mehr, abgesehen von der Entfernungsberechnung. Finde ich klasse!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 19:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Wie das ohne glBegin laufen soll kann ich mir bis jetzt gar nicht vorstellen. Ich denke da sollten bald ein paar Tutorials erweitert werden. Ich bin kein großer Fan von zu viel OOP, ich hasse es, durch Units von Komponenten zu scrollen und tausende Prozeduren zu sehen, die alle nur ein paar Zeilen lang sind, statt einfach mal ein paar ordentliche. Ich hoffe es wird nicht so schilmm, denn ich bin ein Fan von einer Mischung aus Normal und OOP.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2008 20:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Was evtl. auch nicht unerwähnt bleiben sollte. Das Grundgerüst von OpenGL so wie es jetzt existiert wurde vor/um 1995 entwickelt. Seit dem hat sich ein ganz kleines Bisschen was getan. Zum Beispiel. T&L, VBO, Multitexturing, Vertex Shader, Fragment Shader, Geometrie Shader. In den letzten 13 Jahren hat sich die Hardware und selbst OpenGL in eine Richtung entwickelt die zu Begin nicht absehbar war. Irgendwo muss man einen Strich ziehen und komplett "neu" anfangen und die ganzen Altlasten und Relikte rauswerfen. Alles andere wird irgendwan nur krampfig. Und dieser Schritt ist meiner Meinung nach mehr als überfällig.

Aber hey. Es könnt schlimmer sein. Wenn man mit D3D neue Features benutzen möchte muss man seinen Rendercode komplett umstellen. COM sei dank. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 21, 2008 15:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Man muss auch ein bischen vorsorgen, für Raytracing, deffered shading(wird eine sehr große rolle spielen, aufgrund von consolen) und anderen dingen. Ein bischen vorher hab ich auch schon erwähnt, das MGPU und MCPU entwicklung sich stärker in den Mittelpunkt schieben wird. Ich glaube seit nen halben Jahr sind die multicore gpu's raus und es gibt bei der optimierung auf diese noch Problemstellen(z.B. Occlusion culling), die auch noch vorsorglich verbessert werden sollten.
Aktuell werden die Grafikkarten sehr gut ausgenutzt(sind schon nahe Fotorealismus) aber was völlig vernachlässigt wird ist Physik und KI. Seit einiger Zeit schiessen ja Middleware für KI und Physik aus den Boden, die schon echt was drauf haben und man sich fragt, wie konnte man die völlig zurückgebliebenden NPC verkraften. Es wäre z.B. super, wenn man in den Treiber ein hull algo mit implementieren könnte, dann würde Physik und KI wesentlich einfacher und vorallem schneller seine arbeit verrichten können.
In der Regel verwendet man qhull, um die Hüllen zu berechnen aber das ist CPU basiert und die GPU kann sowas in bruchteilen erledigen Da die Welten mitlerweile dynamisch sind, da mehr Leistung zur verfügung steht, werden auch zur laufzeit Hüllen generiert und das ist ned schön, wenn man beim zerfetzen eines Felsen aufeinmal ein kurzes ruckeln hat, weil er die hülle neu berechnen muss. So ein Task kann auch super parallelisiert werden und stört die neuen grakas nicht im geringsten(kann in ruhepausen zwischengequetscht werden) und auf den alten braucht es halt ein paar ms, je nach komplexität.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 21, 2008 21:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
dj3hut1 hat geschrieben:
wie will man sonst ein Polygon mit einer variablen Anzahl von Eckpunkten, Farben, Normalen, Texturkoordinaten etc. zeichnen?

Wie wärs mit einer Funktion, einem Parameter für den Typ der Daten und dann schiebt man alles via Array/Buffer/WasAuchImmer rüber.

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 22, 2008 08:21 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,

Evil-Devil hat geschrieben:
dj3hut1 hat geschrieben:
wie will man sonst ein Polygon mit einer variablen Anzahl von Eckpunkten, Farben, Normalen, Texturkoordinaten etc. zeichnen?

Wie wärs mit einer Funktion, einem Parameter für den Typ der Daten und dann schiebt man alles via Array/Buffer/WasAuchImmer rüber.


Ok, nur mal so als Beispiel, wo der Unterschied wäre, für ein einfaches Fünfeck :

Code:
  1.  
  2. glBegin(GL_POLYGON);
  3.     glColor3f(1,1,1);
  4.     glNormal3f(0,0,1);
  5.     glVertex2f(1,1);
  6.     glVertex2f(0,1);
  7.     glVertex2f(0,0);
  8.     glVertex2f(1,0);
  9.     glVertex2f(2,0.5);
  10. glEnd();;
  11.  


oder :

Code:
  1.  
  2. float[][] colors =
  3. {
  4.     {1,1,1},
  5.     {1,1,1},
  6.     {1,1,1},
  7.     {1,1,1},
  8.     {1,1,1}
  9. };
  10.  
  11. float[][] normals =
  12. {
  13.     {0,0,1},
  14.     {0,0,1},
  15.     {0,0,1},
  16.     {0,0,1},
  17.     {0,0,1}
  18. };
  19.  
  20. float[][] vertices =
  21. {
  22.     {1,1,0},
  23.     {0,1,0},
  24.     {0,0,0},
  25.     {1,0,0},
  26.     {2,0.5,0}
  27. };
  28.  
  29. glGenericPolygon(5, GL_FLOAT, colors, normals, vertices);
  30.  


Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 22, 2008 14:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Mhh.
Bei mir würde das 5 Eck, im immidate mode, so dargestellt werden.
Code:
  1. model=new TKar_Model(wnd->GetContext());
  2. model->Load("../data/5eck.krm");
  3. model->Draw();


Mit VBO so.
Code:
  1. model=new TKar_Model(wnd->GetContext());
  2. model->Load("../data/5eck.krm");
  3. model->Draw();


Mit D3D so.
Code:
  1. model=new TKar_Model(wnd->GetContext());
  2. model->Load("../data/5eck.krm");
  3. model->Draw();


...

Jeder Kapselt fein sein Code in Funktionen und oder Klassen, z.B. den Fenstercode, zum erstellen von GDI und X11 Fenster oder nutzen solchen von anderen.
SDL, OpenAL, RTL/STL/LCL,... wieso soll es dann so schwer sein, auch OpenGL Code zu verpacken ?
Ich kann mir nicht vorstellen, dass jemand von euch direkt auf Alsa, DSound oder OSS programmiert sondern OpenAL, FMod oder ähnliches verwendet.
Wieso ? Weil es einfacher ist und einen viel Zeit abnimmt. Das einarbeiten in die einzelnen API's kostet viel wertvolle Zeit und den Code dann zu debuggen noch vielmehr.
Statistisch verwenden wir ~75% unserer Zeit, an einer Software, für das beheben von Fehlern.
Es ist auch Statistisch wiederlegt, dass die Fehlerrate mit steigender Zeilenanzahl wächst, sogar das Gegenteil ist der Fall.
Komplexere Abläufe enthalten in gekapselter Form weniger Fehler als der direkt geschriebene Code.
Bei komplexer Software, wie einen Spiel hat die Industrie schon lange den Einsatz von externen Game Engines, Middleware und Hilfstools als sinnvoll erkannt.
Also frage ich mich doch, wieso stört es keinen 50 Zeilen Windows und 30Zeilen X11 Code in 2 SDL Funktionen gekapselt zu verwenden aber bei 10Zeilen OpenGL Code sich völlig daran zu verbeissen ?
Mitlerweile wissen wir doch alle, dass Funktionalitäten, wie der immidate Mode eine großen Anteil Code im Treiber ausmacht und durschnittlich gesehen nur von einer verschwindend geringen minderheit verwendet wird.
Ist es wirklich fair gegenüber den Spielern und der Industrie zu sagen "Ich will dieses Feature weiterhin haben.", obwohl die Treiberentwickler ~23%(30% codeeinfluss bei 75% debugzeit=22,5%) der Zeit damit verbringen das beinahe tote Feature am leben zu erhalten ?
Wäre es nicht einfacher sein Code zu Kapseln, die vielen Vorteile zu geniessen und fast 1/4 der Zeit für viel wichtigere Dinge, wie z.B. neue Features, zu verwenden?
Ich glaube, dass es vielen nur schwer fällt gegenüber neuerungen offen zu sein und sich an kleinigkeiten klammern.
Also ich hoffe doch, dass jeder Weise genug ist, seine kostbare Lebenszeit sinnvoll einzusetzen.

My2Cent zum Thema immidate mode.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 22, 2008 14:47 
Offline
DGL Member

Registriert: Mo Nov 06, 2006 19:15
Beiträge: 172
Ich habe mal kurz nachgedacht wie die Zukunft aussehen könnte...

OpenGL 3 wird von allen wichtigen Parteien und Krhonos verabschiedet. Binnen kurzer Zeit haben nVidia, ATi und Intel OpenGL 3 Treiber auf dem Markt, da der Unterschied zu OpenGL 2.x doch relativ gering ist. Diese Treiber werden zunächst noch nicht komplett optimiert sein, aber dennoch das Potential spürbar machen. Jede größere, aktuelle OpenGL Software wird versuchen den Sprung zu machen, da Treiberunterstützung auf breitem Feld vorhanden ist und Geschwindigkeitsvorteile winken. Nach 2 Jahren wird OpenGL 2.x offiziell von den Hardware Herstellern nicht mehr unterstützt. Wie auch bei einigen neu entstehenden OpenSource Projekten wird der Fokus auf Emulation von OpenGL 1.x-2.x über OpenGL 3 gelegt. Der Bestand an alter Software macht dies erforderlich und dank der hohen Performance neuer Hardware laufen die alten Programme auch mehr oder weniger gut.
Es wird erstmals 2 Programmbibliotheken für OpenGL geben. OpenGL 1-2 werden von der bekannten DLL unterstützt und OpenGL 3 bekommt eine neue DLL mit aufgeräumter Codebasis und verbesserter Ladezeit, denn bereits jetzt ist der nVidia OpenGL Treiber 6,7 MB groß.
Große Fluktuationen von D3D Entwicklern hin zu OpenGL sehe ich nicht kommen, aber vermehrt kleinere Cross-Platform-Projekte, die OpenGL 3 voraussetzen u.a. um die Grafikkarte als mathematischen Koprozessor zu verwenden.

...und in drei Jahren poste ich hier nochmal und schreibe: "Ich hab's euch ja gesagt!" :P


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 22, 2008 19:37 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Klingt sehr logisch und mich feut das überhaupt nicht. Warum OpenGL nicht wie die UnrealEngine: Es gibt kein Release, sondern immer wieder Verbesserungen - einzelne Teile werden neu programmiert und somit verbessert - die UnrealEngine 3 existiert daher nicht. Ich hasse Versionen, ein Build x gefällt mir besser. Das hat an sich auch wieder Nachteile, aber kleine Updates lassen sich leichter durchführen und die Abwärtskompatibilität ist leichter beizubehalten. [OT]Dass die UnrealEngine eine der besten Engines der Welt ist, sehe nicht nur ich so, zumal sie eine der wenigen ist, die weder OpenGL noch DirectX benachteiligen, also beides gut unterstützen.[/OT]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 22, 2008 20:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Also Unreal Engine3 ist ned schlecht, dass wir uns nicht falsch verstehen aber wenn du mal mit programmiert hast oder dir mal den sourcecode angeguckt hast(meine wenigkeit), wirst du es überhaupt nicht mehr mögen. Wöchentlich ändern sich der Sourcecode, man muss ständig die branches integrieren und das ist ne arbeit, die für eine Person allein reicht. Zum glück gibt es nur selten große updates, wo sich wirklich was an der Basis verändert.
Also das arbeiten mit der Unreal Engine 3 ist einsame spitze, in keiner Engine kannst du schneller Ergebnisse erzielen aber es zu erweitern ist echt häftig.
Ein Freund von mir hat letztens mal den Test gemacht und in Crysis,UE3 und HL² versucht das gleiche Model mit texturen und shader zu exportieren.
UE3 hat er ~5min gebraucht, Crysis ~2h und HL² hat nen halben Tag gedauert. Ich denke das macht ziemlich klar, wieso UE3 so gerne lizensiert wird.
Noch dazu ist UE3 meines wissens der einzige, der hot asset support hat. Also hui für grafiker und etwas pfui für programmierer.
Allerdings hat man als programmierer eh nicht viel zu lachen, das gleiche neue feature muss für xbox360,pc und ps3 parallel programmiert werden, also 3mal aufwand für die gleiche sache.
In der Regel hat man eine Mainversion.Subversion.Patchversion.Devversion also 4 Versionscounter, die ein Stück Software beschreiben.
Änderungen an der Basis, Funktionserweiterung, Bugfixes, Testversion für Neuerungen und Änderungen.
Die 4. version sieht man nach aussen nicht und die 3. wird oft mit der 2. nummer gemixt.
Aktuell wäre bei OpenGL die korrekte Versionierung so zu beschreiben Mainversion(1-2).Subversion(1-9).Vendor Build(xxxx).
ATI bringt jeden Monat auf den gleichen Tag immer ein Build und wenn nur die readme sich verändert hat.
Also jeden Monat einen 2.1 OpenGL Treiber der durch seine Vendor Buildnummer erkennen lässt, ob er optimierung x oder ext y zusätzlich drin hat.
Die Basis, auf die alle Kartenhersteller bauen müssen ist aktuell 2.1 aber was mit der Build version noch drin ist, legt eine 3. Nummer fest und damit ist absolute kompatibilität gewährleistet. Als Spieleentwickler sage ich, alles was in x.y drin ist kann ich verwenden und für spezielle nicht notwendige Features kann ich ja .z prüfen.

Meiner Meinung nach ist die Versionskennzeichnung von OpenGL sehr übersichtlich und bedarf keiner korrektur aber einer höheren Frequenz(z.B. alle 6Monate).
Alle 6Monate kommt ein neuer NV,ATI oder IBM Chipsatz raus und es wäre toll, wenn dann schon die letzten wichtigen Extensions/ARB zu einer ARB/Basis Funktion geschafft hätten. Das erleichtert die Arbeit, für die Entwickler der Frameworks.

edit:Übrigens hat Unreal auch Versionen Unreal1, Uneral2,Unreal 2.5,Uneral 2X, Unreal3,Unreal3 MMOG,... finde leider die Seite von epic dazu ned.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 23, 2008 08:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Zitat:
Übrigens hat Unreal auch Versionen Unreal1, Uneral2,Unreal 2.5,Uneral 2X, Unreal3,Unreal3 MMOG,... finde leider die Seite von epic dazu ned.

Meinst vielleicht das UDN? http://udn.epicgames.com/

UE 2.5X war ja damals der Branch für die XBox. Bei der 3er ist die Codebasis laut Epic doch auf allen Plattformen lauffähig, da würde ich die spezialisierungen zum MMO/wasAuchImmer/ nicht als eigene Branch sehen, denn das würde zu spezifisch werden.

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 74 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.063s | 16 Queries | GZIP : On ]