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

Aktuelle Zeit: Fr Jul 18, 2025 21:23

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



Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: 4 Viewports für Modelleditor
BeitragVerfasst: Mo Mai 07, 2007 21:12 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
weiß ich, ist bestimmt nicht das erste mal...

folgendes Problem:
Ich brauche nen Modelleditor, weil ich etwas speziell bin mit meinem Projekt. Da hab ich mir gedacht, dass eine typische grundlage sei einfach mal 3 2D-Viewports und nen 3D-Viewport einzurichten und einfach mal so eben ne Modell struktur zu.. stop! das mit den Viewports ist doch nicht so einfach.
Ich habe mir ein Objekt geschrieben, das Viewports verwaltet. Jedes hat nen eigenen DC und RC. Ich habe gelesen (hier im Forum), dass das so nur geht, wenn ich den RC ständig wechsle, um alle viewports zeichnen zu können, und das enorm rechenlastig wird.

Dazu 2 Fragen:

1. Warum ist das so?

2. Wie macht man es besser?

bei mir gibt es bereits das Problem, dass ich zwar triangles etc. zeichnen kann, aber nur das letzte viewport auch texturen erhält. Find ich doof und wills anders, aber nach dem ich etwa 90% meines Codes, der auf bestimmt 4 Units verteilt ist nochmal durchgekaut habe ist nur ein kleiner Schmerz in meinem Kopf bei rausgekommen.

(Das mit den 4 Units liegt daran, dass ich gleich voll aufs Gas getrampelt bin und sofort Modelle,Texte und Trigonometrie drin haben wollte, dass kann man ja erstmal testweise wech lassen)

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 07, 2007 21:37 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
viewtopic.php?t=6280&start=0&postdays=0&postorder=asc

soviel dazu ;)

ausserdem hab ichs mittlerweile einfach 3ds geladen und dann im Octree optimiert.

_________________
bester uo-shard: www.uosigena.de


Zuletzt geändert von Gaukler am Mo Mai 07, 2007 21:42, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 07, 2007 21:38 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Eine andere Möglichkeit ist, nur ein Fenster(Panel,Form,...) wie bisher zu nehmen und mit glViewport(x,y,width,height) selber die verschiedenen Bereiche für Vorne,Oben,Seite,3D festzulegen. Dann braucht man nur ein DC und ein RC.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 08, 2007 06:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
... und selbst wenn Du vier wirklich verschiedene Betriebssystem-Fenster hast und daher vier RCs brauchst, sollten sie sich wenigstens mit wglshareLists EINEN Displaylistenraum teilen: wird man z.B. wirklich in jedem Fenster ganz verschiedene Schriften haben? Ist es wahrscheinlich, pro Fenster ganz verschiedene Texturen zu haben? Bei Deinem Vorhaben ist die Antwort ganz klar NEIN


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 08, 2007 08:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Eine kleine Anmerkung zum Wechseln des Kontextes. Ja das ist eine recht kostspielige Anweisung und wenn man darauf verzichten kann dann sollte man das auch tun. Das extrem darfst du aber bitte nicht überbewerten. Der wird dadurch nicht 50% deine Leistung schlucken. Wie viel das genau sein wird hängt vom jeweiligen System ab und je nachdem wie groß das Modell ist wird das wohl auch in den Hintergrund rutschen. Was du auch nicht vergessen darfst ist die typischerweise Arbeitsweise eines 3D Modellers. Denn dieser rendert nicht dauerhaft sondern normal nur dann wenn sich etwas verändert hat. Sei es durch Animationen oder Benutzerinteraktionen. Und das rückt den Mehraufwand, den das Wechseln mit sich bringt, wieder in ein ganz anderes Licht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 08, 2007 16:25 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
Danke für die zahlreichen Antworten bisher!

Wie der Editor funktionieren soll, die Struktur der Daten-Formate und wie ich sie verwenden will in Spielen/Editoren steht schon 90% fest. Da könnten gegebenfalls nur noch fatale Umstellungen den Plan übern haufn schmeißen. Die Modelle, die ich in dem Editor gestalten will, basieren natürlich auf vetices, die ich zu faces verbinde ( je 3 vertices = 1 face ). Jedes face soll dann mit einem joint gekoppelt werden, der das ganze dann animiert. Und jedes face erhält natürlich eine Textur, deren koordinaten an die Vertices der Fläche weiter gegeeben werden. Darüber will ich hier aber erstmal nicht reden, weil ich ja noch gar nicht soweit bin (ich meld mich mal wieder, weils bestimmt schief geht ^^ ).

Das Prinzip des Editors ist für mich bisher nicht der Knackpunkt. Ich verstehe nur nicht ganz, was der DC und der RC genau machen, und weshalb ich zum Beispiel für mehrere Viewports nur einen brauch. Daher auch das Problem, dass ich mir nicht erklären kann, wie ich es programmtechnisch anstellen soll. Zunächst bin ich nämlich so an die Sache rangegangen, dass ich mir überlegt hatte, dass wenn ich etwas doppelt haben will, dass ich alles verdoppeln muss, was damit zu tun hat, damit es läuft. Das habe ich in diesem Fall erstmal ganz stupide gemacht. Und was man doppelt hat, kann man bequemerweiße in ein Objekt knallen. Beim Rendern ruf ich dann einfach die "draw" prozedur auf, die alles zeichnet und einstellt, was den jeweiligen Viewport betrifft.
Dabei ist mir dann aufgefallen, dass meine Textur-Fonts nur im zuletzt gerenderten Viewport mit Textur angezeigt werden. Also stimmt da etwas nicht. Anschließend bin ich hier ins Forum, weil ich mir gedacht habe, dass es wohl schon mehrere vorher probiert haben und evtl. das Problem kennen... gesucht und nichts in die Richtung gefunden, hingegen war viel interessanter, dass ich gelesen habe, dass mehrere RCs nicht notwendig bis sogar falsch sein würden.

Ich habe in meinem Programm nu 4 Panels und übergebe dem Viewport-Objekt das Panel.handle, damit es daraus den DC erstellen kann und dafür automatisch nen RC bereitstellt. Wie bereits erwähnt sind in meinem Viewport Objekt der RC und DC ein bestandteil, wo durch jeder viewport zwangsläufig nen eigenen RC und DC bekommt. Wie müsste ich es anstellen, damit alle nur einen verwenden?

Danke schön!

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 08, 2007 23:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Das ist ein Thread, der genau dieses Problem behandelt:http://www.delphigl.com/forum/viewtopic.php?t=5866


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 08:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Zitat:
Ich habe in meinem Programm nu 4 Panels und übergebe dem Viewport-Objekt das Panel.handle, damit es daraus den DC erstellen kann und dafür automatisch nen RC bereitstellt. Wie bereits erwähnt sind in meinem Viewport Objekt der RC und DC ein bestandteil, wo durch jeder viewport zwangsläufig nen eigenen RC und DC bekommt. Wie müsste ich es anstellen, damit alle nur einen verwenden?

Um deine DC/RC Verwirrung etwas zu mindern. Jedes echte Fenster kann DCs besitzen. Dieser DC ist dann an dieses Fenster gebunden. Und sobald man einen RC erstellt hat ist dieser an einen DC gebunden. Um deine Frage da zu beantworten. So lange du auf mehrere echte Fenster rendern willst wirst du niemals nur einen RC haben können. Du müsstest dich dort also auf ein Panel beschränken.

Warum spreche ich von echten Fenstern. Die Komponenten der VCL sind nicht zwangsläufig immer echte Fenster im Windows. Teilweise werden durch die VCL nur Fenster simuliert. Wie zum Beispiel die Labels oder die Paintbox. Echte Fenster kann man erkennen wenn eine Komponente ein Handle (HWND) besitzt. Wobei es das nicht unbedingt immer auch nach Außen reichen muss. Ist aber eigentlich üblich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 08:53 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Zitat:
So lange du auf mehrere echte Fenster rendern willst wirst du niemals nur einen RC haben können. Du müsstest dich dort also auf ein Panel beschränken.

Man kann den RC auch nacheinander an verschiedene DC binden, solange die Pixelformate gleich sind.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 09:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hmmmm. Stimmt. Jetzt wo du es sagst. Da war noch was. Dann ziehe ich alles zurück und behaupte das Gegenteil. :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 14:34 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
hmm okay, schonmal gut zu wissen, dass es gehen soll.. also wenn ich es richtig verstanden habe, dann sollen sich meine 4 Panels jeder ein DC schnappen, die sich wiederrum einen RC teilen. Also ich habe da eine funktion, in der ich den RC erstelle, in dem ich... wadde ich zeg sie euch:

Code:
  1.  
  2. RC:= CreateRenderingContext( DC,[opDoubleBuffered],32,24,0,0,0,0);
  3.  


Da wird ja der RC aus nem DC erstellt. Kann ich das jetzt im Etwa so machen :

Code:
  1.  
  2. procedure TForm1.render;
  3. var i:integer;
  4. begin
  5.   for i:=0 to length(MyViewport)-1 do
  6.   begin
  7.     RC:= CreateRenderingContext( MyViewport[i].get_DC,[opDoubleBuffered],32,24,0,0,0,0);
  8.     MyViewport[i].draw;
  9.   end;
  10. end;
  11.  


? Sieht für mich irgendwie falsch aus, weil ich dann ja in jedem render; nen RC anfordere, was für meinen rechner ja so viel wie "Overkill" bedeutet.

//Edit: Tags getauscht

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 15:55 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
Nein, es gibt irgendeinen Befehl, womit man den RC wechseln kann. Müsste ich in der Wiki suchen, habe aber leider keine Zeit mehr.
RC immer neu erstellen ist der Tod, vor allem musst du ja dann immer wieder alle Texturen usw. neu laden.

Es gibt ein Template glaubich von Sascha (unter Files soviel ich weiss, oder auch in der dglsdk), wo beschrieben ist, wie man mit 2 Renderkontexten umgehen muss.

mfg

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 16:44 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
template_vcl_2rc.zip
Ist von Flow, aber er wechselt nur zwischen den beiden Renderkontexten und vereint sie nicht.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 09, 2007 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Der Befehl heißt "wglMakeCurrent".

Aus dem Windows SDK, Stichwort "Rendering Contexts", dort wird man weitergeleitet zu "Rendering Context Functions"
Five WGL functions manage rendering contexts:

WGL Functions ------------------------ Description

wglCreateContext --------------------- Creates a new rendering context.
wglMakeCurrent ----------------------- Sets a thread's current rendering context.
wglGetCurrentContext --------------- Obtains a handle to a thread's current rendering context.
wglGetCurrentDC ---------------------- Obtains a handle to the device context associated with a thread's current rendering context.
wglDeleteContext ---------------------- Deletes a rendering context.

An application creates a rendering context by calling wglCreateContext. The wglCreateContext function takes a device context handle as its parameter and returns a rendering context handle. The created rendering context is suitable for drawing on the device referenced by the device context handle. In particular, its pixel format is the same as the device context's pixel format.

In diesem Zusammenhang noch erwähnenswert:

wglShareLists ------------------- The wglShareLists function enables multiple OpenGL rendering context to share a single display-list space.


Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 11, 2007 12:38 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
Danke danke danke!

Ich hab mir den Code von Flow mal angesehen und gestaunt, wie schnell man mit wenig Fehlern alles falsch machen kann, weil ich schon so ähnlich ran gegangen bin. Nu läufts natürlich ohne Probleme. Auch dank an Traude für die Erklärung der einzelnen Funktionen, da ist garantiert noch mehr nützliches bei.

Ich habe mich mal rangesetzt und das ganze nochmal in eine (hoffentlich) vernünftige Klasse gesetzt:

Code:
  1.  
  2. //=================TVIEWPORT-DEKLARIERUNG===========================
  3.  
  4. TViewport = class
  5.   private
  6.     DC              : HDC;   //Handle der Zeichenfläche
  7.     RC              : HGLRC; //Rendering Context
  8.     Handle          : HWND;  //Handle
  9.     Width,Height    : integer;
  10.     ClearColor      : TPoint3f; // ein Record aus 3 real (x,y,z), ->LVevtor
  11.   public
  12.     constructor Create(Handle:HWND;
  13.                        Width,Height:integer;
  14.                        ClearColor:TPoint3f);
  15.  
  16.     procedure Setup_Viewport;
  17.     procedure Setup_GL;
  18.     procedure to_3D_mode;
  19.     procedure to_2D_mode;
  20.     procedure SwapBuffer;
  21.  
  22.     function get_RC:HGLRC;
  23.  
  24.     destructor Destroy;
  25.   end;
  26.  
  27. //=================TVIEWPORT-METHODEN===============================
  28.  
  29. constructor TViewport.Create(Handle:HWND;
  30.                               Width,Height:integer;
  31.                              ClearColor:TPoint3f);
  32. begin
  33.   self.Handle       := Handle;
  34.   self.Width        := Width;
  35.   self.height       := Height;
  36.   self.clearColor   := ClearColor;
  37.  
  38.   self.DC:= GetDC(self.Handle);
  39.   if not InitOpenGL then Application.Terminate;
  40.   self.RC:= CreateRenderingContext( self.DC,
  41.                                [opDoubleBuffered],
  42.                                32,
  43.                                24,
  44.                                0,0,0,
  45.                                0);
  46.   ActivateRenderingContext(self.DC, self.RC);
  47.  
  48.   self.Setup_GL;
  49.   self.Setup_Viewport;
  50. end;
  51.  
  52. procedure TViewport.Setup_Viewport;
  53. begin
  54.   glMatrixMode(GL_PROJECTION);
  55.   glLoadIdentity;
  56.   glViewport(0,0,self.Width,self.Height);
  57.  
  58.   gluPerspective(45.0, self.Width/self.Height, NearClipping, FarClipping);
  59.   glMatrixMode(GL_MODELVIEW);
  60.   glLoadIdentity;
  61. end;
  62.  
  63. procedure TViewport.Setup_GL;
  64. begin
  65.   glClearColor( self.ClearColor.x,
  66.                 self.ClearColor.y,
  67.                 self.ClearColor.z, 0.0); //Hintergrundfarbe
  68.   glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  69.   glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
  70.   glEnable(GL_TEXTURE_2D);          //2D-Texturen aktivieren
  71.   glAlphaFunc(GL_GREATER,0.1);      //soll eigentlich den alphatest einstellen
  72.   glenable(GL_ALPHA_TEST);          //soll den Alphatest aktivieren
  73. end;
  74.  
  75. procedure TViewport.to_3D_mode;
  76. begin
  77.   glMatrixMode(GL_PROJECTION);
  78.   glLoadIdentity;
  79.   gluPerspective(45.0, self.Width/self.Height, NearClipping, FarClipping);
  80.   glMatrixMode(GL_MODELVIEW);
  81.   glLoadIdentity;
  82.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  83.  
  84.   glMatrixMode(GL_MODELVIEW);
  85.   glLoadIdentity;
  86. end;
  87.  
  88. procedure TViewport.to_2D_mode;
  89. begin
  90.   glMatrixMode(GL_PROJECTION);
  91.   glLoadIdentity;
  92.   glOrtho(0,self.Width,0,self.Height, 0,-128);
  93.  
  94.   glMatrixMode(GL_MODELVIEW);
  95.   glLoadIdentity;
  96. end;
  97.  
  98. procedure TViewport.SwapBuffer;
  99. begin
  100.   SwapBuffers(self.DC);
  101. end;
  102.  
  103. function TViewport.get_RC;
  104. begin
  105.   Result:= self.RC;
  106. end;
  107.  
  108. destructor TViewport.Destroy;
  109. begin
  110.   DeactivateRenderingContext;
  111.   DestroyRenderingContext(self.RC);
  112.   ReleaseDC(self.Handle, self.DC);
  113. end;
  114.  


da steckt alles drin, was man braucht, um ein Viewport zu erstellen. Das einzige was man jetzt noch braucht, ist eine procedure "draw" die halt beinhaltet, was das aktive Viewport darstellen soll.

das könnte im etwa ( in kompletter Anwendung) dann so aussehen:

Code:
  1.  
  2. procedure TForm1.FormCreate(Sender: TObject);
  3. begin
  4.   randomize; //ist immer sinnvoll, zumindest für  mich, weil ich viel
  5.   //mit "Würfeln" mach
  6.   basispfad:=ExtractFilePath(ParamStr(0)); //auch immer sinnvoll
  7.   //den Basispfad des Progs zu kennen
  8.  
  9.   //hier erstellen wir unser Viewport, dafür brauchen wir nur ein gültiges Handle,
  10.   //die Größe des Viewports und ne  Hintergrundfarbe
  11.   //to_Point3f(); ist übrigens eine Funktion aus meiner TVector.pas
  12.   MyViewport := TViewport.Create(self.Handle,self.ClientWidth,
  13.                                self.ClientHeight,
  14.                                to_Point3f(0.2,0.2,0.2));
  15.  
  16.  
  17.   //den IdleHandler anschmeißen, damits rendern durchgehend läuft
  18.   Application.OnIdle := IdleHandler;
  19. end;
  20.  
  21. procedure TForm1.Render;
  22. begin
  23.   MyViewport.to_3D_mode;    //dem Viewport sagen nu kommt 3d
  24.   draw_3dkrempel;        // eine Procedure starten, die alle 3d-dinge abarbeitet
  25.   MyViewport.to_2D_mode;   //dem Viewport sagen, ab nu kommt 2d
  26.   draw_2dkrempel;        // eine Procedure starten, die alle 2d-dinge abarbeitet
  27.   MyViewport.SwapBuffer;     //am Ende den Buffer swappen ^^
  28. end;
  29.  
  30. procedure TForm1.FormDestroy(Sender: TObject);
  31. begin
  32.   MyViewport.Destroy; // muss beim beenden ausgeführt werden,
  33.   //um den DC und RC ordnungsgemäß zu killen und
  34.   // das Handle wieder frei zu geben
  35. end;
  36.  
  37.  


Habs so gestartet und des macht keine Mucken, wenn man nu mehrere Viewports haben will, macht man sich einfach ne Viewport-Manager, der automatisch wglShareList(); für das gesamte Viewport-array auslöst und schon funzt des.

Wer dazu Verbesserungen hat, der sollte sie dringenst hier loswerden, damit das ganze Rund wird und wirklich Rund läuft. So muss dann nicht für jeden weiteren, der soetwas machen will n riesen Thread aufgemacht werden.

Nochmals großen Dank!

[Edit] -> Zeilenumbrüche korrigiert

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.016s | 16 Queries | GZIP : On ]