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

Aktuelle Zeit: Fr Jul 18, 2025 00:14

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Di Mai 22, 2012 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja & Ja.

Zum Grund warum die verschachtelten Listen (höchstwahrscheinlich) nicht funktionieren:
Du hast dann ja eine Liste von Listen. In der äußeren Liste liegen nur Verweise auf die inneren Listen, die nicht sequentiell im Speicher liegen müssen (und werden; da liegen noch Längeninfos etc. dazwischen). Davon weiß OpenGL aber nichts. Es nimmt sich den ganzen zusammenhängenden Datenblock und versucht den als Floats zu interpretieren. Dass da Unfug rauskommt, wenn da irgendwelches anderes Zeug zwischen steht ist klar ;).

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Di Mai 22, 2012 16:55 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Okay, dann erstmal recht vielen Dank für deine Geduld, werde mich direkt heut Abend mal dran setzen und das probieren. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Di Mai 22, 2012 18:36 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Ich verwende das ganze nun so:
Code:
  1.  
  2. static Buffer CacheShapes(const Shape[] shapes) {
  3.     float[] values;
  4.  
  5.     foreach (const Shape s; shapes) {
  6.         const Vector2f[] vertices = s.GetVertices();
  7.         const Color[] colors = s.GetColor();
  8.  
  9.         const uint len = vertices.length;
  10.         for (uint i = 0; i < len; ++i) {
  11.             values ~= [vertices[i].x, vertices[i].y];
  12.  
  13.             if (i < colors.length) {
  14.                 values ~= colors[i].GLConvert();
  15.             }
  16.         }
  17.     }
  18.  
  19.     Buffer b = new Buffer(Type.ArrayBuffer);
  20.  
  21.     b.Cache(&values[0], values.length * float.sizeof);
  22.    
  23.     values.clear();
  24.    
  25.     return b;
  26. }
  27.  


Doch was ich bekomme ist nun so etwas: http://s14.directupload.net/file/d/2898 ... 3w_png.htm

Sieht sehr eigenartig aus, Muss ich ne andere Größe wählen?
Zudem ist meine FPS eingebrochen. Vorher, auch wenn es nunmal nur ohne Farbe funktioniert hat, war sie bei annähernd 3000, nun aber nur noch bei knapp 500. Wie kommt das?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Mi Mai 23, 2012 00:33 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Habe mittlerweile den Verdacht, dass OpenGL durcheinander kommt, weil ich bisher nicht oder nicht richtig mit glColorPointer und glVertexPointer zusammen gearbeitet habe. Oder sollte er das selber erkennen, und ich brauche nur glVertexPointer zu verwenden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Mi Mai 23, 2012 11:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nein, du musst OpenGL noch über die Struktur deines Puffers aufklären. Dazu einfach mal die Dokumentation von glColorPointer und glVertexPointer lesen. Da gibt es die Argumente stride und offset, das sind diejenigen, die du brauchst. stride ist praktisch die größe eines Vertexinfoblocks (also koordinate + farbe), da dies den Abstand zwischen zwei Vertices bestimmt. offset musst du nur bei Color entsprechend setzen, da der erste Farbwert logischerweise weiter hinten im Puffer liegt als der erste Koordinatenwert.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Do Mai 31, 2012 23:34 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Da ich bei dem anderen Thema, so hoffe ich doch, etwas weiter gekommen bin und der Lösung sehr nah, hätte ich, wenn du erlaubst, hier noch ein paar Fragen an dich.
Ich habe es jetzt mit dem offset gemacht (die Anzahl der Elemente mal float.sizeof). Zudem habe ich mir überlegt, dass man an sich ja auch eine Default Farbe braucht, da evtl. manche Vertices ja gar keine Farbe haben.
Jedenfalls habe ich diesen Code
Code:
  1.  
  2. static Buffer CacheShapes(const Shape[] shapes) {
  3.     float[] values;
  4.  
  5.     foreach (const Shape s; shapes) {
  6.         const Vector2f[] vertices = s.GetVertices();
  7.         const Color[] colors = s.GetColor();
  8.  
  9.         const float[4] def_color = [0.0, 0.0, 0.0, 0.0];
  10.  
  11.         foreach (uint index, const Vector2f vec; vertices) {
  12.             if (index < colors.length) {
  13.                 values ~= colors[index].GLConvert();
  14.             } else {
  15.                 values ~= def_color;
  16.             }
  17.            
  18.             values ~= [vec.x, vec.y, 1.0];
  19.         }
  20.     }
  21.    
  22.     Buffer b = new Buffer(Type.ArrayBuffer);
  23.    
  24.     b.SetBufferOffset(PtrType.Color, 3 * float.sizeof);
  25.     b.SetBufferOffset(PtrType.Vertex, 4 * float.sizeof);
  26.    
  27.     b.Cache(&values[0], values.length * float.sizeof);
  28.  
  29.     values.clear();
  30.    
  31.     return b;
  32. }
  33.  


Wobei Zeile 15 wahlweise auskommentiert ist, da sie die Default Farbe einfließen lässt.

Zeichnen tue ich es so:
Code:
  1.  
  2. b2.PointerTo(Buffer.PtrType.Color);
  3. b2.PointerTo(Buffer.PtrType.Vertex);
  4.  
  5. b2.DrawArrays(Shape.Type.Quad);
  6.  


Doch, je nachdem ob ich eine default Farbe angeben, oder oder nicht, bekomme ich zwei völlig unterschiedliche Bilder, aber keines davon ähnelt dem, das es werden soll. Habe ich das Offset immer noch falsch?

Meine PointerTo sieht folgendermaßen aus:
Code:
  1.  
  2. void PointerTo(const PtrType type) const {
  3.     this.Bind();
  4.  
  5.     final switch (type) {
  6.         case PtrType.Vertex:
  7.             glCheck(glEnableClientState(GL_VERTEX_ARRAY));
  8.  
  9.             const void* ptr = this.GetBufferNum() == 1 ? null : cast(void*)(4 * float.sizeof); // das als PTR angeben?
  10.  
  11.             glCheck(glVertexPointer(3, GL_FLOAT, this._buffer_offset[type], null));
  12.         break;
  13.  
  14.         case PtrType.TexCoord:
  15.             glCheck(glEnableClientState(GL_TEXTURE_COORD_ARRAY));
  16.  
  17.             glCheck(glTexCoordPointer(3, GL_FLOAT, this._buffer_offset[type], null));
  18.         break;
  19.  
  20.         case PtrType.Color:
  21.             glCheck(glEnableClientState(GL_COLOR_ARRAY));
  22.  
  23.             //const void* ptr = this.GetBufferNum() == 1 ? null : cast(void*)(2);
  24.  
  25.             glCheck(glColorPointer(4, GL_FLOAT, this._buffer_offset[type], null));
  26.         break;
  27.     }
  28. }
  29.  


Und hier nochmal die Bilder.
Mit default Color: http://s1.directupload.net/file/d/2907/eahnlm68_png.htm
Ohne: http://s14.directupload.net/file/d/2907 ... az_png.htm


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 12:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja, weil du Offset da übergibst, wo stride hingehört (siehe Dokumentation!)

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:07 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Stride ist doch das Byteoffset. Der gesamte Buffer beginnt mit einer Farbe die 4 * sizeof(float) Bytes groß ist und danach folgt ein 3 * sizeof(float) großer Block mit Vertex Daten. Und alle 3 * sizeof(float) Bytes kommt wieder eine Farbe, so liegt das im Speicher.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:13 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich verstehe deine Variablen immer noch nicht so ganz, okay. Dennoch brauchst du ein Offset zur ersten Farbe, nämlich 4*sizeof(float) (siehe auch meine bind() funktion). Und alle 7*sizeof(float) kommt wieder eine Farbe. Die größe der Farbdaten geht mit ein in Stride.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:25 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Da das erste was im Buffer ist, eine Farbe ist, müsste ich ja eig. einen Offset für den VertexPointer brauchen. In dem Fall (const void*)(4 * sizeof(float)).
Und da nach jeder Farbe 3 Vertex Daten kommen (im float Format) braucht glColorPointer ein stride von 3 * sizeof(float) und kein Offset. Und glVertexPointer in diesem Sinne eben das Offset von (const void*)(4 * sizeof(float)) und dazu einen Stride von 4 * sizeof(float), da dazwischen je eine Farbe liegt, die 4 floats hat.
Oder nicht?

Zum Verständnis: mein Buffer sieht nun so aus:
r, g, b, a:x, y, z:r, g, b, a:x, y, z:....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja, wie gesagt, der Stride ist aber der komplette Vertex. Also Farbe+Koordinate. Siehe auch mein verlinkter Code!

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:38 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Ich bin manchmal etwas schwer von Begriff, sorry, kaum hatte ich den Beitrag geschrieben hab ich es denn gerafft. Eig. lag es echt nur daran, dass ich dachte, dass man unterschiedliche Strides hat, einmal 4 und einmal 3 wegen 4 floats für Farbe und 3 für Vertices. Danke für die Aufklärung und Geduld, die hab ich wahrscheinlich schon stark strapaziert.
Mit diesem Cache Code:
Code:
  1.  
  2. static Buffer CacheShapes(const Shape[] shapes) {
  3.     float[] values;
  4.  
  5.     foreach (const Shape s; shapes) {
  6.         const Vector2f[] vertices = s.GetVertices();
  7.         const Color[] colors = s.GetColor();
  8.  
  9.         const float[4] def_color = [0.0, 0.0, 0.0, 1.0];
  10.  
  11.         foreach (uint index, const Vector2f vec; vertices) {
  12.             if (index < colors.length) {
  13.                 values ~= colors[index].GLConvert();
  14.             } else {
  15.                 values ~= def_color;
  16.             }
  17.            
  18.             values ~= [vec.x, vec.y, 1.0];
  19.         }
  20.     }
  21.    
  22.     Buffer b = new Buffer(Type.ArrayBuffer);
  23.    
  24.     b.SetBufferStride(PtrType.Color, 7 * float.sizeof);
  25.     b.SetBufferStride(PtrType.Vertex, 7 * float.sizeof);
  26.     b.SetBufferOffset(PtrType.Vertex, 4 * float.sizeof);
  27.    
  28.     b.Cache(&values[0], values.length * float.sizeof);
  29.  
  30.     values.clear();
  31.    
  32.     return b;
  33. }
  34.  


und diesem PointerTo Code:

Code:
  1.  
  2. void PointerTo(const PtrType type) const {
  3.     this.Bind();
  4.  
  5.     const void* ptr = this._buffer_offset[type] == 0 ? null : cast(void*)(this._buffer_offset[type]);
  6.  
  7.     final switch (type) {
  8.         case PtrType.Vertex:
  9.             glCheck(glEnableClientState(GL_VERTEX_ARRAY));
  10.  
  11.             glCheck(glVertexPointer(3, GL_FLOAT, this._buffer_stride[type], ptr));
  12.         break;
  13.  
  14.         case PtrType.TexCoord:
  15.             glCheck(glEnableClientState(GL_TEXTURE_COORD_ARRAY));
  16.  
  17.             glCheck(glTexCoordPointer(3, GL_FLOAT, this._buffer_stride[type], ptr));
  18.         break;
  19.  
  20.         case PtrType.Color:
  21.             glCheck(glEnableClientState(GL_COLOR_ARRAY));
  22.  
  23.             //const void* ptr = this.GetBufferNum() == 1 ? null : cast(void*)(2);
  24.  
  25.             glCheck(glColorPointer(4, GL_FLOAT, this._buffer_stride[type], ptr));
  26.         break;
  27.     }
  28. }
  29.  


bekomme ich jetzt schon einmal dieses Bild: http://s14.directupload.net/file/d/2908 ... 8b_png.htm

Also fast geschafft, nur die Farbe wird noch nicht angezeigt, aber das schaff ich wohl (hoffe ich jedenfalls) auch alleine. ;)
Danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Doch da ist Farbe, nur so als Hinweis, falls dein Bildschirm zu dunkel ist. Die obere linke ecke der inneren Quads ist blau.

OT, wegen Geduld (ja, ich habe mir das anmerken lassen):
Das Problem ist weniger, wenn jemand schwer von Begriff ist. Das Problem ist mehr, wenn jemand die Links die man gibt, nicht wirklich liest, oder das zumindest nicht zeigt. Beispiel bei den Code Links: Eigentlich hätte man anhand derer fähig sein sollen, das zu korrigieren. Wenn es da Verständnisprobleme gegeben hat, so wurden diese nicht angesprochen (=> sieht aus wie nicht gelesen). Ich weiß dass auf eigenen, noch dazu spärlich dokumentierten Code verlinken didaktisch nicht das gelbe vom Ei ist, aber auch meine Zeit ist begrenzt, daher versuche ich es zumindest immer mal wieder, zumal der Code getestet ist und funktioniert, daher als gute Vorlage dient. Die Tatsache, dass er nur spärlich dokumentiert ist kann sogar dazu beitragen, dass genug eigene Denkleistung stattfindet ;).
Dokumentation: Wurde verlinkt, da stehen die Parameter, wenn auch nicht eindeutig, erklärt. Aus der Erklärung gehen aber nur zwei Optionen hervor: Entweder das Stride bezieht die eigenen Werte mit ein oder nicht. Beides kann man flink ausprobieren. Natürlich werden die auszuprobierenden Optionen schnell sehr viele, wenn man noch ein paar andere Unsicherheitsfaktoren drin hat. Aber in dem Fall kann man nachfragen. Das gleiche Problem sehe ich leider auch in dem anderen Thread, und sowas finde ich immer etwas traurig. Denn wenn man in einem Forum (oder Mailingliste oder whatever) antwortet, nimmt man sich die Zeit, weil man erhofft, dass man anderen Leuten etwas beibringen kann. Leider bringt das alles nicht viel, wenn man irgendwann merkt, dass man eigentlich nur mit einem Proxy zum Code kommuniziert. An dieser Stelle sei auch an What have you tried? verwiesen.
Disclaimer: Das ist nicht als persönlicher Angriff zu verstehen; Viel mehr als Motivation wie man schneller zu hilfreichen Antworten und damit zu Lösungen und ans Ziel kommt :).

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 15:57 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Ja, das tut mir auch ehrlich Leid, ich bin etwas zaghaft wenn es um etwas geht was ich nicht komplett durchblicke, aber ich gelobe Besserung.
Nun raffe ich so langsam auch, was da vor sich geht. Was bspw. Blending angeht, wie im anderen Thread, da habe ich noch absolut kp. Aber da lese ich mich nun genauso rein wie ich es nun hier versuche, damit die blaue Farbe nicht nur in der oberen Linken Ecke zu sehen ist.^^

edit: Wobei ich ja denke, das ich den Fehler kenne: Meine default Farbe.
Allerdings wenn ich sie nicht verwende stimmt ja mein Stride nicht mehr, d.h. wenn mal für ein Quadrat 4 Farben sind und für das nächste nur eine, dann müsste man diese 3 * 4 * sizeof(float) Bytes ja irgendwie mit leer auffüllen. Oder nicht? Wie wird das gehandhabt? Ich hoffe man versteht was ich meine.

Als Bsp. nochmal: was passiert wenn der VBO so aussieht:
Code:
  1.  
  2. r, g, b, a:x, y, z:x,y,z
  3.                    ^
  4.                     Hier müsste man nun leer Bytes auffüllen, die nicht als RGBA interpretiert werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glColorPointer - wie verwenden?
BeitragVerfasst: Fr Jun 01, 2012 20:03 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Ich hab das jetzt so gelöst, das, wenn keine Farbe gefunden wird, die zuletzt verwendete genommen wird. So bekomme ich das Resultat das ich möchte.
Ist das korrekt so oder geht es einfacher?

Hier mal der Code, für alle die irgendwann das Problem vllt. mal haben:
Code:
  1.  
  2. static Buffer CacheShapes(const Shape[] shapes) {
  3.     float[] values;
  4.  
  5.     float[4] last_color = [0, 0, 0, 0];
  6.  
  7.     foreach (const Shape s; shapes) {
  8.         const Vector2f[] vertices = s.GetVertices();
  9.         const Color[] colors = s.GetColor();
  10.  
  11.         foreach (uint index, const Vector2f vec; vertices) {
  12.             values ~= [vec.x, vec.y, 1.0];
  13.  
  14.             if (index < colors.length) {
  15.                 const float[4] col = colors[index].GLConvert();
  16.  
  17.                 values ~= col;
  18.  
  19.                 last_color = col;
  20.             } else {
  21.                 values ~= last_color;
  22.             }
  23.         }
  24.     }
  25.    
  26.     Buffer b = new Buffer(Type.ArrayBuffer);
  27.    
  28.     b.SetBufferStride(PtrType.Color, 7 * float.sizeof);
  29.     b.SetBufferStride(PtrType.Vertex, 7 * float.sizeof);
  30.     b.SetBufferOffset(PtrType.Color, 3 * float.sizeof);
  31.    
  32.     b.Cache(&values[0], values.length * float.sizeof);
  33.  
  34.     values.clear();
  35.    
  36.     return b;
  37. }
  38.  


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]