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

Aktuelle Zeit: Mi Jul 16, 2025 19:47

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



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

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
@LH_Freak: Naja, wenns schwarz ist, dann is ja schon mal gut, das zeigt dir, dass (höchstwahrscheinlich) korrekt initialisiert wurde -> wahrscheinlich liegts an was anderem, post mal das Zeug, das gerendert werden soll.

_________________
"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:25 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
hier:

Code:
  1. glBegin(GL_QUADS);
  2.   glColor3f(1,0,0);
  3.   glVertex3f(-1,-1,-5);
  4.   glColor3f(0,1,0);
  5.   glVertex3f(-1,1,-5);
  6.   glColor3f(0,0,1);
  7.   glVertex3f(1,1,-5);
  8.   glColor3f(0,1,1);
  9.   glVertex3f(1,-1,-5);
  10. glEnd;


Ach ja, ich benutz die dglOpenGL!


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

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

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Stell mal die ganzen Minus-Fünfen auf Plus-Fünfen ;)

_________________
"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:29 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
ne, irgendwie net!


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

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
schalt mal gl_cull_face ab, evtl liegts daran ...

_________________
Aktuelles Projekt :
www.PicPlace.de


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

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
wenns ned hilft, dann post mal alle Prozeduren (selbstgemachte!), in den ein gl-Befehl drinsteht. Versuchen wir mal eine Radikalkur :P

_________________
"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:48 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
höhm (wegen selbstgemachte; da gibt's net viele (eigentlich gar keine))
Aber gut:

Code:
  1. procedure TEngine.Init;
  2. var
  3. i: integer;
  4. begin
  5. // Wenn gewollt, dann hier in den Vollbildmodus wechseln
  6. // Muss vorm Erstellen des Kontextes geschehen, da durch den Wechsel der
  7. // Gerätekontext ungültig wird!
  8.  
  9. // OpenGL-Funtionen initialisieren
  10. InitOpenGL;
  11. // Gerätekontext holen
  12. DC := GetDC(Handle);
  13. // Renderkontext erstellen (32 Bit Farbtiefe, 24 Bit Tiefenpuffer, Doublebuffering)
  14. RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  15. // Erstellten Renderkontext aktivieren
  16. ActivateRenderingContext(DC, RC);
  17. // Tiefenpuffer aktivieren
  18. glEnable(GL_DEPTH_TEST);
  19. // Nur Fragmente mit niedrigerem Z-Wert (näher an Betrachter) \"durchlassen\"
  20. glDepthFunc(GL_LESS);
  21. // Löschfarbe für Farbpuffer setzenprocedure TForm1.FormCreate(Sender: TObject);
  22. begin
  23. Engine := TEngine.Create;
  24. Engine.Handle := Handle;
  25. Engine.init;
  26. end;
  27.  
  28. procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  29.   var Done: Boolean);
  30. begin
  31. Engine.BeginRender;
  32.  
  33. glBegin(GL_QUADS);
  34.   glColor3f(1,0,0);
  35.   glVertex3f(-1,-1,5);
  36.   glColor3f(0,1,0);
  37.   glVertex3f(-1,1,5);
  38.   glColor3f(0,0,1);
  39.   glVertex3f(1,1,5);
  40.   glColor3f(0,1,1);
  41.   glVertex3f(1,-1,5);
  42. glEnd;
  43.  
  44. Engine.EndRender;
  45.  
  46. Engine.GetFPS;
  47. Caption := '[' + FloatToStr(Engine.FPS) + ' fps]';
  48. Done := False;
  49. end;
  50.  
  51. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  52. begin
  53. Engine.Kill;
  54. end;
  55.  
  56. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  57.   Shift: TShiftState);
  58. begin
  59. close;
  60. end;
  61.  
  62. end.
  63. // Displayfont erstellen
  64. //BuildFont('MS Sans Serif');
  65. // Idleevent für Rendervorgang zuweisen
  66. //Application.OnIdle := ApplicationEventsIdle;
  67. // Zeitpunkt des Programmstarts für FPS-Messung speichern
  68. StartTick := GetTickCount;
  69. end;
  70.  
  71. procedure TEngine.Kill;
  72. begin
  73. // Renderkontext deaktiveren
  74. DeactivateRenderingContext;
  75. // Renderkontext \"befreien\"
  76. wglDeleteContext(RC);
  77. // Erhaltenen Gerätekontext auch wieder freigeben
  78. ReleaseDC(Handle, DC);
  79. // Falls wir im Vollbild sind, Bildschirmmodus wieder zurücksetzen
  80. ChangeDisplaySettings(devmode(nil^), 0);
  81. end;
  82.  
  83. procedure TEngine.BeginRender;
  84. begin
  85. // In die Projektionsmatrix wechseln
  86. glMatrixMode(GL_PROJECTION);
  87. // Identitätsmatrix laden
  88. glLoadIdentity;
  89. // Viewport an Clientareal des Fensters anpassen
  90. glViewPort(0, 0, Width, Height);
  91. // Perspective, FOV und Tiefenreichweite setzen
  92. gluPerspective(60, Width/Height, 1, 128);
  93.  
  94. // In die Modelansichtsmatrix wechseln
  95. glMatrixMode(GL_MODELVIEW);
  96. // Identitätsmatrix laden
  97. glLoadIdentity;
  98. // Farb- und Tiefenpuffer löschen
  99. end;
  100.  
  101. procedure TEngine.EndRender;
  102. begin
  103. // Hinteren Puffer nach vorne bringen
  104. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  105. SwapBuffers(DC);
  106. end;
  107.  
  108. procedure TEngine.GetFPS;
  109. begin
  110. inc(Frames);
  111. // FPS aktualisieren
  112. if GetTickCount - StartTick >= 500 then
  113.  begin
  114.  FPS       := Frames/(GetTickCount-StartTick)*1000;
  115.  Frames    := 0;
  116.  StartTick := GetTickCount
  117.  end;
  118. end;
  119.  
  120. end.


Des ist der Quelltext der engine.

Und hier der in meiner Unit XY:

Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3. Engine := TEngine.Create;
  4. Engine.Handle := Handle;
  5. Engine.init;
  6. end;
  7.  
  8. procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  9.   var Done: Boolean);
  10. begin
  11. Engine.BeginRender;
  12.  
  13. glBegin(GL_QUADS);
  14.   glColor3f(1,0,0);
  15.   glVertex3f(-1,-1,5);
  16.   glColor3f(0,1,0);
  17.   glVertex3f(-1,1,5);
  18.   glColor3f(0,0,1);
  19.   glVertex3f(1,1,5);
  20.   glColor3f(0,1,1);
  21.   glVertex3f(1,-1,5);
  22. glEnd;
  23.  
  24. Engine.EndRender;
  25.  
  26. Engine.GetFPS;
  27. Caption := 'Morph3D - [' + FloatToStr(Engine.FPS) + ' fps]';
  28. Done := False;
  29. end;
  30.  
  31. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  32. begin
  33. Engine.Kill;
  34. end;
  35.  
  36. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  37.   Shift: TShiftState);
  38. begin
  39. close;
  40. end;
  41.  
  42. end.


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

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

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Ah!!

Code:
  1. procedure TEngine.EndRender;
  2. begin
  3. // Hinteren Puffer nach vorne bringen
  4. SwapBuffers(DC);
  5. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  6. end;


sonst löscht du erst das Bild, und bringst es dann auf den Schirm!!!

_________________
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 21:02 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
geht immer noch net :heul:


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

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Hast du noch mal nach meiner Änderung probiert die z werte auf -5 zu setzen...

_________________
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 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
geht net.


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

Registriert: Fr Dez 19, 2003 14:27
Beiträge: 107
Wohnort: Indianapolis, USA
Hier hab aus deinem Copy & Paste Unfall dies hier gebastelt.
Das Funktioniert auch, mit ein wenig fleiss haettest du das
sich auch zum Laufen bekommen :D

Code:
  1. unit test_main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   AppEvnts,dglOpenGL;
  8.  
  9. type
  10.   TEngine = class
  11.   private
  12.     fHandle        : THandle;
  13.     dc             : HDC;
  14.     rc             : HGLRC;
  15.     StartTick      : LongWord;
  16.     Frames         : LongWord;
  17.     FPS            : Single;
  18.     fWidth,fHeight : Integer;
  19.   public
  20.     constructor Create(Handle:THandle; Width,Height:Integer);
  21.     destructor  Destroy;
  22.     procedure   BeginRender;
  23.     procedure   EndRender;
  24.     procedure   GetFPS;
  25.   end;
  26.  
  27.   TForm1 = class(TForm)
  28.     ApplicationEvents1: TApplicationEvents;
  29.     procedure FormClose(Sender:TObject; var Action:TCloseAction);
  30.     procedure FormKeyDown(Sender:TObject; var Key:Word; Shift:TShiftState);
  31.     procedure FormCreate(Sender:TObject);
  32.     procedure ApplicationEvents1Idle(Sender:TObject; var Done:Boolean);
  33.   private
  34.     Engine : TEngine;
  35.   public
  36.   end;
  37.  
  38. var
  39.   Form1: TForm1;
  40.  
  41. implementation
  42.  
  43. {$R *.DFM}
  44.  
  45.  
  46.  
  47. constructor TEngine.Create(Handle:THandle; Width,Height:Integer);
  48. var
  49.   i: integer;
  50. begin
  51.   inherited Create;
  52.   fHandle := Handle;
  53.   fWidth  := Width;
  54.   fHeight := Height;
  55.  
  56.   // Wenn gewollt, dann hier in den Vollbildmodus wechseln
  57.   // Muss vorm Erstellen des Kontextes geschehen, da durch den Wechsel der
  58.   // Gerätekontext ungültig wird!
  59.  
  60.   // OpenGL-Funtionen initialisieren
  61.   InitOpenGL;
  62.   // Gerätekontext holen
  63.   DC := GetDC(fHandle);
  64.   // Renderkontext erstellen (32 Bit Farbtiefe, 24 Bit Tiefenpuffer, Doublebuffering)
  65.   RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  66.   // Erstellten Renderkontext aktivieren
  67.   ActivateRenderingContext(DC, RC);
  68.   // Tiefenpuffer aktivieren
  69.   glEnable(GL_DEPTH_TEST);
  70.   // Nur Fragmente mit niedrigerem Z-Wert (näher an Betrachter) \"durchlassen\"
  71.   glDepthFunc(GL_LESS);
  72.   // Löschfarbe für Farbpuffer setzen
  73.  
  74.  
  75.   // Displayfont erstellen
  76.   //BuildFont('MS Sans Serif');
  77.   // Idleevent für Rendervorgang zuweisen
  78.   //Application.OnIdle := ApplicationEventsIdle;
  79.   // Zeitpunkt des Programmstarts für FPS-Messung speichern
  80.   StartTick := GetTickCount;
  81. end;
  82.  
  83. destructor TEngine.Destroy;
  84. begin
  85.   // Renderkontext deaktiveren
  86.   DeactivateRenderingContext;
  87.   // Renderkontext \"befreien\"
  88.   wglDeleteContext(RC);
  89.   // Erhaltenen Gerätekontext auch wieder freigeben
  90.   ReleaseDC(fHandle, DC);
  91.   // Falls wir im Vollbild sind, Bildschirmmodus wieder zurücksetzen
  92.   ChangeDisplaySettings(devmode(nil^), 0);
  93.  
  94.   inherited Destroy;
  95. end;
  96.  
  97. procedure TEngine.BeginRender;
  98. begin
  99.   // In die Projektionsmatrix wechseln
  100.   glMatrixMode(GL_PROJECTION);
  101.   // Identitätsmatrix laden
  102.   glLoadIdentity;
  103.   // Viewport an Clientareal des Fensters anpassen
  104.   glViewPort(0, 0, fWidth, fHeight);
  105.   // Perspective, FOV und Tiefenreichweite setzen
  106.   gluPerspective(60, fWidth/fHeight, 1, 128);
  107.  
  108.   // In die Modelansichtsmatrix wechseln
  109.   glMatrixMode(GL_MODELVIEW);
  110.   // Identitätsmatrix laden
  111.   glLoadIdentity;
  112.   // Farb- und Tiefenpuffer löschen
  113.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  114. end;
  115.  
  116. procedure TEngine.EndRender;
  117. begin
  118.   // Hinteren Puffer nach vorne bringen
  119.   SwapBuffers(DC);
  120. end;
  121.  
  122. procedure TEngine.GetFPS;
  123. begin
  124.   inc(Frames);
  125.   // FPS aktualisieren
  126.   if GetTickCount - StartTick >= 500 then begin
  127.     FPS       := Frames/(GetTickCount-StartTick)*1000;
  128.     Frames    := 0;
  129.     StartTick := GetTickCount
  130.   end;
  131. end;
  132.  
  133. //------------------------------------------------------------------------------
  134.  
  135. procedure TForm1.FormCreate(Sender: TObject);
  136. begin
  137.   Engine := TEngine.Create(Handle,Width,Height);
  138. end;
  139.  
  140. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  141. begin
  142.   Engine.Free;
  143. end;
  144.  
  145. procedure TForm1.FormKeyDown(Sender:TObject; var Key:Word; Shift:TShiftState);
  146. begin
  147.   close;
  148. end;
  149.  
  150. procedure TForm1.ApplicationEvents1Idle(Sender:TObject; var Done:Boolean);
  151. begin
  152.   Engine.BeginRender;
  153.  
  154.   glBegin(GL_QUADS);
  155.     glColor3f(1,0,0); glVertex3f(-1,-1,-5);
  156.     glColor3f(0,1,0); glVertex3f(-1,1,-5);
  157.     glColor3f(0,0,1); glVertex3f(1,1,-5);
  158.     glColor3f(0,1,1); glVertex3f(1,-1,-5);
  159.   glEnd;
  160.  
  161.   Engine.EndRender;
  162.  
  163.   Engine.GetFPS;
  164.   Caption := '[' + FloatToStr(Engine.FPS) + ' fps]';
  165.   Done := False;
  166. end;
  167.  
  168. end.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 21, 2005 18:44 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Des geht auch net!
Es bleibt schwarz!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 21, 2005 20:37 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Ich muss sagen das mir geht es schon, also das Problem liegt irgendwo anders in deinem Rechner...

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 21, 2005 20:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Oder woanders im Prgramm.

Hatte mal nen Problem mit Objektselektion, wo ich den Fehler absulut nicht finden konnte.

Habe alles in nen ganz neues Programm eingebaut... (Wer weiß, wo mann da irgendwass verändert hatt, irgendwamnn mal)

Und es lief! das Blöde nur, ich hatte den Fehler dabei nicht gefunden.

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.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 Vorherige  1, 2, 3, 4, 5  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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