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

Aktuelle Zeit: Fr Aug 01, 2025 00:34

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



Ein neues Thema erstellen Auf das Thema antworten  [ 46 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 20:56 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
ich hatte OpenGL.pas verwendet.
habe mir jetzt euren Header geholt.
was muss ihc denn da alles machen? :oops:
ich hab opengl aus den uses und eure rein, und denn destroy part auch schon wie in eurem Helpfile.
Aber was macht das OpenGlInit? brauche ich dann mein SetupPixelFormat gar nicht mehr?
kannst du mal eine grundstruktur nur mit Init und Destroy posten, bitte? :D


Edit:
ich denke ich hab das soweit aber er meckert hier:
Code:
  1. procedure RaiseLastOSError;
  2. begin
  3. SysUtils.RaiseLastOSError;
  4. // Use RaiseLastWin32Error when your Delphi version doesn't know the above
  5. // In D7,RaiseLastWin32Error is deprecated by RaiseLastOSError
  6. end;
  7.  

was heisst Use RaiseLastWin32Error, wo soll ich das hernehmen? Ich hab Delphi 5 Pro.

vielen Dank schon mal
mfg mandumoal


Zuletzt geändert von mandumoal am Do Mär 11, 2004 21:02, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 21:02 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Es gibt im Downloadbereich ein OpenGL 1.5 Template http://www.delphigl.com/do_download.php?f=8. Da wird der neue Header verwendet:

Code:
  1. procedure TGLForm.FormCreate(Sender: TObject);
  2. begin
  3. InitOpenGL;
  4. DC := GetDC(Handle);
  5. RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  6. ActivateRenderingContext(DC, RC);
  7. ...
  8. end;
  9.  
  10. procedure TGLForm.FormDestroy(Sender: TObject);
  11. begin
  12. DeactivateRenderingContext;
  13. wglDeleteContext(RC);
  14. ReleaseDC(Handle, DC);
  15. ...
  16. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 21:10 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
Danke!

Mit dem Template meckert er auch nur an dem RaiseLastOSError (Edit vom vorigen Post)

Der Rest müsste also gehen.

mfg mandumoal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das heisst das du statt RaiseLastOSError einfach RaiseLastWin32Error hinschreiben sollst wenn du eine Delphiversion < 7 verwendest.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 21:50 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
Auch dafür Danke!

Jetzt sah alles so gut aus aber ich bekomme den gleichen Fehler wieder bei Textur.GenTexture!

Ich poste einfach mal alles:
was fehlt ist entspricht genaudem Template

Code:
  1. var
  2.   GLForm: TGLForm;
  3.   textur : tglbitmap2d;
  4.  
  5. implementation
  6.  
  7. {$R *.dfm}
  8.  
  9. // =============================================================================
  10. procedure TGLForm.LoadTextures;
  11. begin
  12.  
  13.   Textur := TglBitmap2D.Create('auto.bmp');
  14.   Textur.AddAlphaFromColorKey(255, 0, 204);
  15.   Textur.GenTexture;
  16. end;
  17.  
  18. =============================================================================
  19. procedure TGLForm.FormCreate(Sender: TObject);
  20. begin
  21. // Wenn gewollt, dann hier in den Vollbildmodus wechseln
  22. // Muss vorm Erstellen des Kontextes geschehen, da durch den Wechsel der
  23. // Gerätekontext ungültig wird!
  24. // GoToFullscreen(1024, 768, 32, 75);
  25.                      
  26. // OpenGL-Funtionen initialisieren
  27. InitOpenGL;
  28. // Gerätekontext holen
  29. DC := GetDC(Handle);
  30. // Renderkontext erstellen (32 Bit Farbtiefe, 24 Bit Tiefenpuffer, Doublebuffering)
  31. RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  32. // Erstellten Renderkontext aktivieren
  33. ActivateRenderingContext(DC, RC);
  34. // Tiefenpuffer aktivieren
  35. glEnable(GL_DEPTH_TEST);
  36. // Nur Fragmente mit niedrigerem Z-Wert (näher an Betrachter) \"durchlassen\"
  37. glDepthFunc(GL_LESS);
  38. // Löschfarbe für Farbpuffer setzen
  39. glClearColor(0,0,0,0);
  40. // Displayfont erstellen
  41. BuildFont('MS Sans Serif');
  42. // Idleevent für Rendervorgang zuweisen
  43. Application.OnIdle := ApplicationEventsIdle;
  44. // Zeitpunkt des Programmstarts für FPS-Messung speichern
  45. StartTick := GetTickCount;
  46. LoadTextures; //<<================
  47. end;
  48.  
  49. // ========================================
  50.  
  51.  
  52. procedure TGLForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  53. begin
  54. // In die Projektionsmatrix wechseln
  55. glMatrixMode(GL_PROJECTION);
  56. // Identitätsmatrix laden
  57. glLoadIdentity;
  58. // Viewport an Clientareal des Fensters anpassen
  59. glViewPort(0, 0, ClientWidth, ClientHeight);
  60. // Perspective, FOV und Tiefenreichweite setzen
  61. gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
  62.  
  63. // In die Modelansichtsmatrix wechseln
  64. glMatrixMode(GL_MODELVIEW);
  65. // Identitätsmatrix laden
  66. glLoadIdentity;
  67. // Farb- und Tiefenpuffer löschen
  68. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  69.  
  70. ShowText;
  71.  
  72.   textur.bind();
  73.  
  74.   glbegin(gl_quads);
  75.     glcolor3f(255,255,255);
  76.     gltexcoord2f(0,0);
  77.     glvertex2f(1,100);
  78.     gltexcoord2f(0,1);
  79.     glvertex2f(1,228);
  80.     gltexcoord2f(1,1);
  81.     glvertex2f(128,228);
  82.     gltexcoord2f(1,0);
  83.     glvertex2f(128,100);
  84.   glend;
  85. // Hinteren Puffer nach vorne bringen
  86. SwapBuffers(DC);
  87.  
  88. // Windows denken lassen, das wir noch nicht fertig wären
  89. Done := False;
  90.  
  91. // Nummer des gezeichneten Frames erhöhen
  92. inc(Frames);
  93. // FPS aktualisieren
  94. if GetTickCount - StartTick >= 500 then
  95.  begin
  96.  FPS       := Frames/(GetTickCount-StartTick)*1000;
  97.  Frames    := 0;
  98.  StartTick := GetTickCount
  99.  end;
  100. end;


was ist denn da falsch?

mfg mandumoal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 09:33 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
Guten Morgen!

Ich habe das Problem noch immer nicht lösen können.
Textur.GenTextur funktioniert wenn ich davor keine Textur lade. :roll:

Könnte vielleicht mal jemand das ausprobieren und wenn es geht die ganze Unit hier posten? Damit wäre mir sehr geholfen und ich würde euch nicht mehr so nerven :wink:

mfg mandumoal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 09:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Einfacher ist es, wenn du dein Projekt einfach packst und hochlädst (bitte zusammen mit sämtlichen Bibliotheken, die nicht standardmäßig bei Delphi dabei sind) - da es sich noch um eine recht einfache Anwendung handelt, sollte man dann den Fehler rasch finden können.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 09:50 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
Ok
Ich lade es mal hoch - hoffe ich habe nichts vergessen

mfg mandumoal


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 10:11 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Die wichtigste Datei - die MainForm.pas - fehlt. Lösch doch einfach alle .exe und .dcu Dateien und pack das ganze Projektverzeichnis.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 10:20 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
Ich wusste doch da fehlt was :oops:


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 10:40 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Hmm, bei mir funktioniert es (ein Quad mit einem Auto auf grausigem rosa Hintergrund ?) :wink: - wobei ich glBitmap 1.15 und die neuesten dglOpenGL Header verwender habe.

Schau bitte mal nach, ob auch in deiner glBitmap.pas der dglOpenGL Header verwendet wird (ich glaube da geistern mehrere Versionen herum), ansonsten versuch mal das
Code:
  1.  GoToFullscreen(1024, 768, 32, 75);
  2.  


Kommando im FormCreate auszukommentieren.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 10:56 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
:oops:

am FullScreen liegt es nicht...

es liegt daran, das ich dachte glBitmap würde standardmässig dglOpenGL.pas verwenden was aber Blödsinn ist denn sonst hätte es ja mit meinem alten Opengl.pas nicht gefunzt da ich da dglOpenGL noch gar nicht hatte. :cry:

Zum rosa Background: ich habe extra eine Farbe gewählt die nicht vorkommt, damit man sie transparent machen kann :wink:

Vielen Vielen Dank!
Du bist ein Held :D

mfg mandumoal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 11:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das raff ich jetzt nicht. Was stand denn in der glBitmap oben als Unit drin?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 12:28 
Offline
DGL Member

Registriert: Do Mär 11, 2004 12:33
Beiträge: 24
Da stand OpenGl12.pas drin, weiss gar nicht ob ich die hab.

Anderes Problem:
Entweder ich steh grad voll auf dem Schlauch oder es gibt den Befehl gltranslate in dglOpenGl.pas nicht. (Undefinierter Bezeichner)
ich muss nochmal schauen

mfg mandumoal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 12:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Der Befehl glTranslate ist falsch, es muss nämlich glTranslatef heissen (siehe OpenGL-Doks). Der heisst nur in der recht fehlerhaften OpenGL.pas von Borland so und ist eindeutig ein Fehler von Borlands Seite.

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


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


Wer ist online?

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