| Autor |
Beitrag |
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Do 10.07.08 19:24
Bergmann89: Neuer Framebuffer? Meinst du Framebuffer Object? Denn OpenGL 1.1 kann jedes System. Selbst die Softwareimplementation von Windows die ohne Treiber einspringt. Du solltest mal schauen welche Methoden du benutzt und dann in der dglOpenGL.pas danach suchen. Ein Stück oberhalb ist immer eine Kommentar der angibt zu welcher Extension es gehört. Auf diese solltest du dann beim Starten prüfen ob es die gibt. Es gibt zu jeder Extension auch eine passende Variable die beim Aktivieren des RCs gesetzt wird. Denn so eine Zugriffsverletzung ist immer nicht so schön. Da wäre es besser wenn du sagen kannst. Das, das und das fehlt.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 10.07.08 20:34
_________________ Die Lösung ist nicht siebzehn.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Do 10.07.08 22:51
@ Lossy eX: ja ich mein FrameBufferObject ^^ aber was is da der unterschied zum FrameBuffer? das mit den Fehlermeldungen mach ich jetzt noch, aber erstma brauch ich die dglOpenGL.pas, hab bloß die *.dcu!
@ Wolle92: wie jetzt 4D?? kannste ma den Link posten? das will ich mir ansehen!
MfG bergmann.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Fr 11.07.08 07:48
Framebuffer Objects sind vom Prinzip her auch nur Framebuffer. Das stimmt so weit. Allerdings sind das Off-Screen Framebuffer der neusten Generation. Die verhalten sich etwas anders als der normale Renderkontext. Das Besondere an FBOs ist aber die umfangreiche Konfigurierbarkeit. Also zum Beispiel die Tatsache dass du direkt in eine Textur zeichnen kannst. Es gab vor FBOs aber auch schon andere Möglichkeiten die in etwa das Gleiche bewirkt haben aber dort musste dann unnötig Speicher kopiert werden bzw. handelte es sich dabei um einen anderen Kontext der immer wieder aktiviert werden musste. Und das kostet massiv Zeit bzw was platformabhängig.
FBOs sind da auf einem neueren Stand und das müssen die Grafikkarten auch können. Nicht jede uralte oder Bürokarte kann das. Ich meine aber ab einer Radeon 9x00 bzw. Geforce 6x00 werden FBOs unterstützt. Vorrausgesetzt natürlich ein halbwegs aktueller Treiber ist installiert. FBOs befinden sich im übrigen noch nicht in einer OpenGL Kernversion. Das muss also immer zusätzlich noch unterstützt werden.
dglOpenGL.pas. Schau mal in den passenden Wiki Artikel auf delphigl.com. Dort findenst du immer die aktuelle Version. Allerdings bin ich mir ziemlich sicher, dass die auf deinem Rechner auch irgendwo sein muss. Würde mich zu mindest wundern, da wir nie nur eine DCU ausgeliefert haben. 
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Fr 11.07.08 08:28
www.superliminal.com/cube/cube.htm
Da isser in 4-D.... Kannst ihn mischen und dann Lösen lassen...
Versuch aber bloß nicht, das System zu verstehen...
4-Dimensionale Objekte dehnen sich in Richtungen aus, die wir nicht wahrnehmen und nicht verstehen können...
Das ist der Hyperraum, ein theoretischer Raum, außerhalb unserer 3-Dimensionalen Welt und außerhalb der Raumzeit...
Dort soll es, falls es diesen Hyperraum wirklich gibt, möglich sein in Überlichtgeschwindigkeit zu reisen... (Kennt man ja aus Sci-Fi)
4-Dimensionale Objekte zu kreieren erfordet einem Menge Denkleistung (mist^^) und diese Objekte sind nicht real 4-Dimensional, da sie von uns nur 3-Dimensional dargestellt werden können...
Noch was (Herleitung der 4. Dimension):
0. Dimension: Ein Punkt
1. Dimension: Wir bewegen uns in eine beliebige Richtung und ziehen eine Linie
2. Dimension: Wir bewegen uns in eine weitere, beliebige Richtung, die nicht die bereit existierende Strecke ist... (einfachster Fall: senkrecht auf der Strecke)
3. Dimension: Wir suchen wieder eine neue Richtung, dazu schliessen wir alle Richtungen aus, die in der Ebene der beiden bereits existierenden Linien sind und bewegen uns dann in eine der verbleibenden... (einfachster Fall: senkrecht zur Ebene)
4. Dimension: Ein weiteres Mal suchen wir nach einer neuen Richtung... Dazu schliessen wir alle Richtungen aus, die sich im Raum der 3 vorhandenen Dimensionen befinden... Übrig bleiben dann solche, die wir uns nicht mehr vorstellen können... Und dann gibts wieder eine Linie senkrecht auf unsere 3 vorhandenen... Für unseren 3-Dimensionalen Verstand gibts da aber nix mehr, wo man noch senkrecht machen kann...
Aber irgendwie schaffen es immer wieder irgendwelche Mathematiker, denen langweilig ist, solche Würfel zu zeichnen oder eben einen 4-D-Rubiks-Cube zu machen...
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
Stübi
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Fr 11.07.08 08:40
Mitmischer 1703 hat folgendes geschrieben: | Bei mir hagelt's Zugriffsverletzungen, wegal, was ich mache  |
Schliesse mich dem Post an.
Grüsse
Stübi
_________________ Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Fr 11.07.08 12:42
HI,
hab ne neue Version hoch geladen, in der sollte es jetzt keine Fehler mehr hageln, sondern es sollten richtige Fehlermeldungen mit vernünftigen Aussagen kommen!
@Lossy eX: Danke für die Erklörung, man lern nie aus ^^ und ich hatte die *.pas doch, hab die wohl beim entpacken überstehen xD
@Wolle92: gut, ich werd mir das ma ansehen. das is ja dann so ähnlich wie bei A. Einsteins Relativitätstheorie, mit der Krümmung im Raum ^^
MfG Bergmann.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: So 13.07.08 12:44
Moin,
an alle bei den die Zugriffsverletzungen waren: könnt ihr bitte nochma die neue Version laden und sagen ob jetzt ordentliche Fehlerbeldungen kommen? Danke!
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.07.08 13:18
Schlechte Nachricht:
Vor dem Erscheinen des Formulars die erste Zugriffsverletzung (Adresse 0, Lesen von 0); nach dem Erscheinen die zweite (wieder Adresse 0, Lesen von 0).
Das dürfte nicht allzu schwer zu beheben sein: Baue mal ein paar Assertions ein. Schreibe einfach vor jeden Zugriff (oder vor viele Zugriffe) auf ein Objekt / Pointer
Delphi-Quelltext 1:
| Assert(Assigned(Objekt)); |
Wenn das Objekt dann nil ist (was ja offensichtlich zweimal auftritt), wird eine ordentliche Exception mit Dateiname und Zeilennummer ausgelöst. Dann hast du es wesentlich einfacher zu debuggen.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: So 13.07.08 15:08
Danke für den Tipp, aber bei OpenGL is das n bisl anders. Wenn ich ein Objekt erzeuge, dann bekomm ich nur ein Integer-Wert zurück, um das Objekt ansprechen zu können. Und da funzt das mit den Assert(Assigned(Objekt)); nich. Aber ich mach mich nochma im OpenGL Forum schlau...
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.07.08 17:27
Bergmann89 hat folgendes geschrieben: | | Wenn ich ein Objekt erzeuge ... |
Welche Objekte erzeugst du in OpenGL? Da gibt es doch nur Zeichenmethoden, vielleicht noch Namen oder Listen. Aber die eigentlichen Objekte erstellst du doch mit einer Engine, wenn du kein rohes OpenGL verwenden willst.
Bergmann89 hat folgendes geschrieben: | | , dann bekomm ich nur ein Integer-Wert zurück, um das Objekt ansprechen zu können. |
Bist du dir sicher, dass du die richtige Engine gewählt hast? Das hört sich nicht sehr fortschrittlich in Sachen OOP an.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: So 13.07.08 17:49
Yogu: Ich denke du vertust dich da gerade ein bisschen.  OpenGL ist eine plattforunabhängige Schnittstelle. Da gibts keine richtigen Delphi Objekte, denn die Schnittstelle muss für alle Plattformen und Sprachen funktionieren. Nicht wie DX nur für Windows... Entsprechend wird bei OpenGL alles über IDs geregelt. Selbst bei Texturen ist das so und die sind bereits seit OpenGL 1.1 enthalten.
Das Problem liegt daran, dass Bergmann89 eine relativ neue Erweiterungen benutzt ohne zu übrprüfen ob sie existiert. Und entsprechend sind dann einzelne Methoden nicht vorhanden bzw deren Pointer sind nil. Dann knallts.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.07.08 18:02
Lossy eX hat folgendes geschrieben: | Yogu: Ich denke du vertust dich da gerade ein bisschen. OpenGL ist eine plattforunabhängige Schnittstelle. Da gibts keine richtigen Delphi Objekte |
Hab ich denn irgendwo gesagt, in OpenGL gäbe es Delphi-Objekte?
Aber du hast recht, das liegt natürlich höchstwahrscheinlich nicht an Objekten. Mir ist das ja auch schon oft passiert, dass alle möglichen GL-Methoden eine Zugriffsverletzung auslösten. Da kann man mit Assertions auch nicht viel erreichen. Ich dachte, ein Objekt wie zum Beispiel der Texturen-Manager wurde nicht initialisiert, das könnte bei einer eigenen Engine passieren.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: So 13.07.08 18:39
Na ja. Für mich sind Objekte in OpenGL halt eben Textur objekte, (Vertex|Pixel|Frame) Buffer Objects oder Shader objekte etc. Und diese Sachen werden auch ganz offiziell als Objekte bezeichnet. OpenGL 3.0 (wenn es denn irgendwann mal erscheint) wird nur noch aus solchen Objekten bestehen. Also wirklich nur.
Yogu hat folgendes geschrieben: | Bergmann89 hat folgendes geschrieben: | | , dann bekomm ich nur ein Integer-Wert zurück, um das Objekt ansprechen zu können. |
Bist du dir sicher, dass du die richtige Engine gewählt hast? Das hört sich nicht sehr fortschrittlich in Sachen OOP an. |
Deswegen hatte ich die Delphiobjekte in den Raum geworfen. Denn die Ojekte innerhalb OpenGL arbeiten mit IDs. Und meiner Meinung nach geht es ja um die. Aber dann hast du nur eine andere Art Objekte gemeint als ich.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 13.07.08 18:42
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 14.07.08 11:40
So: jetzt muss es aber gehen!
ich hatte n Denkfehler drin: ich hab das FBO erzeugt, und dann überprüft ob es da ist. aber wenn FBOs nicht unterstützt werden, dann bingt die Prozedur, die das FBO erzeugt den Fehler!
Download wie immer im 1. Post.
MfG Bergmann
|
|
Stübi
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Mo 14.07.08 12:43
Bergmann89 hat folgendes geschrieben: | So: jetzt muss es aber gehen!
ich hatte n Denkfehler drin: ich hab das FBO erzeugt, und dann überprüft ob es da ist. aber wenn FBOs nicht unterstützt werden, dann bingt die Prozedur, die das FBO erzeugt den Fehler!
Download wie immer im 1. Post.
MfG Bergmann |
Bei mir gehts weiterhin nicht. Wirft weiterhin mit fehler um sich.
Grüsse
Stübi
_________________ Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mo 14.07.08 14:04
Ich hab die 1.5 mal getestet.
Glückwunsch, jetzt schmeißt er eine ordentliche Fehlermeldung:
Fehler 1:
| Unable to create frame buffer object! Application terminated. |
Vielleicht hilf dir das ja weiter beim Debuggen.
Prozessor: AMD Athlon™ XP 1800+ (1532,5 MHz)
Grafikkarte: NVIDIA, GeForce4 MX 4000
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 14.07.08 14:21
@Yogu: hab mal bei Google gesucht: es sieht so aus, als ob deine MX4000 keine FrameBufferObjekte unterstützt. Da muss ich ma noch n bisl basteln, dass das Prog dann trotzdem läuft...
@Stübi: Immer noch wilde Zugriffsverletzungen? oder wie bei Yogu ordentliche Meldungen?
€: so jetzt sollte ne fehlermeldung kommen wenn keine FrameBufferObjekte unterstützt werden, aber das Prog sollte trotzdem gehen. Bloß ohne die FBOs hat man wieder diese unfreiwilligen Rotationen wenn man AA an hat. aber darauf wird in der fehlermeldung auch hingewiesen! DL im 1. Post.
MfG Bergmann.
|
|
CarpeDiem
      
Beiträge: 128
WIN XP
Borland C++ 2002, CodeGear C++ 2007, C# (VS 2008)
|
Verfasst: Fr 18.07.08 11:30
Hallo,
Du solltest noch überwachen, ob in den Regions- und Sprachptionen in der Systemsteuerung als Dezimaltrennzeichen ein "," oder ein "." steht. Ansonsten bekommt man einen Fehler, daß z. B. "0,5" keine gültige Gleitkommazahl ist.
Habe es bei mir mal so gelöst, kann aber auch sein, daß es eine fertige Funktion gibt.
C#-Quelltext 1: 2: 3: 4: 5: 6:
| AnsiString __fastcall DecSeparator(void) { if ((FloatToStr(StrToFloat(FloatToStr(123.4)))) == "123.4") return "."; if ((FloatToStr(StrToFloat(FloatToStr(123.4)))) == "123,4") return ","; return ""; }; |
_________________ Stefan - Carpe Diem
Es ist keine Schande zu fallen, eine Schande ist nur nicht wieder aufzustehen
|
|
|