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

Aktuelle Zeit: Mi Jul 16, 2025 19:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 69 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags: Rendern
BeitragVerfasst: Mi Jan 19, 2005 19:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Ich bastel gerade an ner Unit, um nicht jedesmal OGL initialisieren bzw. die Template benutzen muss.
Aber wie mach ich des mit dem Rendern.
In D3D gibt es ja die Möglichkeit hiermit:
Code:
  1. Device.beginScene;
  2. // Befehle
  3. Device.EndScene;

die Befehle, die dazwischen stehen zu rendern.
Gibt es das (bzw. etwas ähnlichen) auch in OGL?


Zuletzt geändert von LH_Freak am Di Mai 24, 2005 19:18, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 19, 2005 19:04 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Nein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 19, 2005 19:06 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Mist (sorry)!
Und wie könnte man, dass dann realisieren?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 19, 2005 23:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Jeder gültige OpenGL Aufruf wird an die GraKa bzw. den Framebuffer weitergeleitet. Durch aufrufen von Flush oder einer entsprechenden Funktion, die den Buffer ausgibt, wird das Zeichnen "beendet" (zumindest für dieses Bild).

Aus welcher Unit auch immer die OpenGL Befehle kommen, alle Landen im Framebuffer wenn Sie:

die selbe OpenGL Unit nutzen und
gültig sind.

(Zu ersteren: Es gibt fehler, wenn du in einer Unit die OpenGL12.pas verwendest OpenGL aber über die DGLOpenGL.pas initialisiert wurde.)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 06:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Kleine Anmerkung zu Flash. Das ist nicht ganz richtig. Die OpenGL12.ps und die dglOpenGL.pas bertragen sich nicht, da beide die Methoden dynamisch laden. Wenn du OpenGL mit der dglOpenGL initialisiert hast und dann die OpenGL12.pas initialisierst (Also die Funktionspointer lädst) dann kannst du auch diese verwenden.

Die Textures.pas benutzt keinen der OpenGL Header. Sie lädt ihre 2-3 Methoden von selbst und sie funktioniert dennoch. Im Endeffekt zeigen alle diese Methoden dann ja eh auf die selben Methoden in der Schnittstelle von OpenGL. Für OpenGL spielt es keine Rolle woher die Befehle kommen. Hauptsache sie kommen von dem gleichem Thread.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 15:24 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
kann ich die Idle-Prozedur nicht einfach teilen (also da wo die Befehle normal reinkommen)?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 15:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich kann dir gerade nicht folgen. Aber mir fällt gerade was zu deinem "Problem" ein. Du könntest eine Klasse machen, die
- bei der Erzeugung OpenGL initialisiert.
- bei BeginScene den Bildschirm löscht.
- bei EndScene den aktiven Buffer wechselt und somit das neue Bild zu gesicht bring
- bei dem Freigeben dann entsprechend auch OpenGL wieder frei gibt.

Allerdings alle Aufrufe von OpenGL die außerhalb von Begin und EndScene aufgerufen werden würden, würden dennoch zu OpenGL gelangen. Das könntest du nur dann verhinden indem du alle Funktionspointer von OpenGL löschen und wieder laden würdest. Allerdings solltest du so etwas bei jedem Bild versuchen würdest du unglaublich viel Zeit verschwenden. Was absolut nicht nötig wäre. Abgesehen davon, dass die Aufrufe von OpenGL dann in einem Fehler enden würde. Da deren Poiner Nil wären.

Allerdings um deine Initialisierung zu vereinfachen kannst du auch die Methode aus der dglOpenGL benutzen.
CreateRenderingContext, DestroyRenderingContext, ActivateRenderingContext und DeactivateRenderingContext

Das dürfte das alles schon ein wenig schmaler machen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Also, ich meinte das so:

Idle-Prozedur:

Code:
  1. // In die Projektionsmatrix wechseln
  2. glMatrixMode(GL_PROJECTION);
  3. // Identitätsmatrix laden
  4. glLoadIdentity;
  5. // Viewport an Clientareal des Fensters anpassen
  6. glViewPort(0, 0, ClientWidth, ClientHeight);
  7. // Perspective, FOV und Tiefenreichweite setzen
  8. gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
  9.  
  10. // In die Modelansichtsmatrix wechseln
  11. glMatrixMode(GL_MODELVIEW);
  12. // Identitätsmatrix laden
  13. glLoadIdentity;
  14. // Farb- und Tiefenpuffer löschen
  15. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  16. SwapBuffers(DC);


und ich wollte es so machen

Code:
  1. procedure BeginRender;
  2. begin
  3. // In die Projektionsmatrix wechseln
  4. glMatrixMode(GL_PROJECTION);
  5. // Identitätsmatrix laden
  6. glLoadIdentity;
  7. // Viewport an Clientareal des Fensters anpassen
  8. glViewPort(0, 0, ClientWidth, ClientHeight);
  9. // Perspective, FOV und Tiefenreichweite setzen
  10. gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
  11.  
  12. // In die Modelansichtsmatrix wechseln
  13. glMatrixMode(GL_MODELVIEW);
  14. // Identitätsmatrix laden
  15. glLoadIdentity;
  16. // Farb- und Tiefenpuffer löschen
  17. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  18. end;
  19.  
  20. procedure EndRender;
  21. begin
  22. SwapBuffers(DC);
  23. end;


verstehst du's jetzt?


Zuletzt geändert von LH_Freak am Di Mai 24, 2005 19:19, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 19:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Also das glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); sollte in den "EndRender"-Teil, aber sonst seh ich kein Problem, und das ganze sollte funzen, hab nämlich zufällig letzte Woche gerade genau dasselbe gemacht, will meinen Code in Zukunft ein bissl übersichtlicher halten.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 19:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Ich müsch mich mal ein :-)

Ist das nicht völlig egal, ob er den Befehl direkt vors Rendern oder hinter den SwapBuffer befehl setzt???

Oder gibt das unterschiede in der performance?

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 20:10 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Ich hab des jetzt gemacht, und ich finde:
WOW, das ist das schwärzeste Schwarz, des ich je gesehen habe.

Warum funktioniert des net.

Diese gähnende Leere; da fühl ich mich immer so alleine ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 20:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
@geo : genau das wollt ich auch grade sagen ...

meines wissens macht das absolut keinen unterschied, da es ja in der render-"schleife" von opengl immer an der selben stelle steht, egal ob man das vor dem rendern oder nach dem swapbuffers macht ...

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 20:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
@LH_Freak: Wenns schwarz is, ists doch ok, oder soll schon was gezeichnet werden?

@geo, rswm: Das war einfach Gewohnheit von mir, vielleicht ists wirklich egal, habs aber bis jetzt noch nie wo anders als vor dem eigentlichen Zeichnen gesehen...

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 20:15 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
ja, ein weißes Viereck.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 20, 2005 20:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
@LA_BODA : is vollkommene geschmackssache ...

_________________
Aktuelles Projekt :
www.PicPlace.de


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 13 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.011s | 15 Queries | GZIP : On ]