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

Aktuelle Zeit: So Jul 27, 2025 05:15

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Displaylisten und mehrere Viewports
BeitragVerfasst: Mi Sep 01, 2004 15:17 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 21, 2004 14:05
Beiträge: 17
Hi,
ich hab mir eine eigene TViewport-Klasse von TWinControl abgeleitet und davon mehrere auf mein Formular geklatscht.
Alle Viewports sollen dabei dasselbe rendern, u.a. einige Displaylisten.
Leider werden die DisplayListen nur auf dem Viewport angezeigt, bei dem ich als letztes die Größe definiert hab, obwohl sich die einzelnen Viewports in nichts unterscheiden...
Wenn ich direkt in der Render-Prozedur mit glVertex zeichne wirds auf allen angezeigt, nur Displaylisten werden nur einmal angezeigt....
Das ganze sieht folgendermaßen aus:

Code:
  1.  
  2. procedure TForm1.FormCreate(Sender: TObject);
  3. begin
  4. ...
  5.   VP1 := TViewPort.Create(self,self,vsPerspective);
  6.   VP2 := TViewPort.Create(self,self,vsFront);
  7.   VP3 := TViewPort.Create(self,self,vsRight);
  8.   VP4 := TViewPort.Create(self,self,vsTop);
  9.   SetViewPortSize;
  10. ...
  11. end;
  12.  
  13. procedure TForm1.SetViewPortSize;
  14. begin
  15.   VP1.Left := 0;
  16.   VP1.Top := 0;
  17.   VP1.Width := (ClientWidth div 2) - 2;
  18.   VP1.Height := (ClientHeight div 2) - 2;
  19.  
  20.   VP2.Left := (ClientWidth div 2) + 2;
  21.   VP2.Top := 0;
  22.   VP2.Width := (ClientWidth div 2) - 2;
  23.   VP2.Height := (ClientHeight div 2) - 2;
  24.  
  25.   VP3.Left := 0;
  26.   VP3.Top := (ClientHeight div 2) + 2;
  27.   VP3.Width := (ClientWidth div 2) - 2;
  28.   VP3.Height := (ClientHeight div 2) - 2;
  29.  
  30.   VP4.Left := (ClientWidth div 2) + 2;
  31.   VP4.Top := (ClientHeight div 2) + 2;
  32.   VP4.Width := (ClientWidth div 2) - 2;
  33.   VP4.Height := (ClientHeight div 2) - 2;
  34. end;
  35.  


In diesem Fall werden die Displaylisten nur auf dem VP4 angezeigt...

In der OnResize-Prozedur des TViewPort steht folgendes:
Code:
  1.  
  2. procedure TViewPort.ResizeViewPort(Sender: TObject);
  3. begin
  4.   wglMakeCurrent(DC,RC);
  5.   glViewPort(0,0,ClientWidth,ClientHeight);
  6. end;
  7.  


Hab auch schon probiert in jeder Render-Prozedur der einzelnen Viewports glViewport aufzurufen, das bringt aber gar nix.

Ich hoff ihr könnt mir helfen...

Achja, noch eine Frage:
Kann man ein gluQuadric an eine beliebige Position setzen? Das wird ja immer bei (0,0,0) erzeugt...

mfg
Alphamoose


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 01, 2004 15:41 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Alphamoose hat geschrieben:
Kann man ein gluQuadric an eine beliebige Position setzen? Das wird ja immer bei (0,0,0) erzeugt...

Klar, mit Hilfe der ModelView-Matrix - wie mit jedem Objekt. Einfach die Matrix sichern (glPushMatrix), glTranslate aufrufen, Quadric zeichen und Matrix wieder zurück holen (glPopMatrix). Push und Pop natürlich nur, wenn du die Matrix danach wieder im Originalzustand brauchst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 15:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich schätze mal (letzter Sourceteil) dass jeder Viewport nen eigenen Renderkontext hat. Wenn dem so ist, musst du die Namensräume für Displaylisten (und Texturen/Shader) mit wglShareLists zwischen den Kontexten teilen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 16:10 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 21, 2004 14:05
Beiträge: 17
@Arno
Achja stimmt das gibts ja auch noch :D , dank Dir...

@Son of Satan
Hm da werd ich mich mal schlau machen. Gibbet da auch so ne Funktionsreferenz wie das hier mit wgl-Befehlen? http://www.mevis.de/~uwe/opengl/opengl.html

/edit
Ui, hab grade das hier eingefügt:
Code:
  1. wglShareLists(VP4.RC,VP1.RC);
  2. wglShareLists(VP1.RC,VP2.RC);
  3. wglShareLists(VP2.RC,VP3.RC);

und schon läufts wie geschmiert.
danke Dir \":)\"


mfg
Alphamoose[/pascal]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 16:17 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Alphamoose hat geschrieben:
Hm da werd ich mich mal schlau machen. Gibbet da auch so ne Funktionsreferenz wie das hier mit wgl-Befehlen? http://www.mevis.de/~uwe/opengl/opengl.html

ist zwar noch nciht ganz vollständig, aber guck doch mal bei unserem Wiki unter OpengL-Funktionsübersicht! ;-)
http://wiki.delphigl.com/

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 16:31 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Man kann bei mehreren Viewports auch nur einen Render Context erstellen und vor dem Zeichnen dann mit wglMakeCurrent immer nur das DC Handle ändern. Das ist in bestimmten Fällen einfacher, weil man sich dann keine Gedanken über die verschiedenen Zustände wie aktuelle Texture,blending usw. bei mehreren Context machen muß.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 16:52 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 21, 2004 14:05
Beiträge: 17
Sehr schön, vielen dank für die schnellen Antworten und ein großen Lob an die Wiki-Ersteller, sehr hilfreich :wink:

mfg
Alphamoose


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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