Entwickler-Ecke
Freeware Projekte - Zauberwürfel
Bergmann89 - Do 26.06.08 12:48
Titel: Zauberwürfel
HI,
ich hab vor kurzem angefangen in OpenGl zu programmieren. Nun wollte ich euch die Früchte meiner 1. Arbeit zeigen. Bestimmt kennen von euch einige den Zauberwürfel, der war in der DDR mal der Renner^^
Er besteht aus 3x3x3 kleinen Würfeln, die unterschiedliche Farben haben. Ziel ist es die kleinen Würfel so zu Ordnen, das die Fläschen des großen Würfels eine einheitliche Farbe haben.
Und das hab ich in meinem Programm realisiert. Die Kamera kann man drehen indem man die rechte Maustatse gedrückt hält und die Seiten des Würfels dreht man mit der linken Maustaste.
Viel Spaß beim knobeln^^
€1: Kamera drehen mit STRG+Maus möglich
€2: LOAD, SAVE, RESET eingefügt
€3: Tutorial rein gebastelt und unfreiwille Rotationen behoben
€4: Aussagekräftige Fehlermeldungen anstatt Speicherverletzungen
€5: Bugfixing
€6: Bugfixing
€7: immernoch Bugfixing
MfG Bergmann.
LexXis - Do 26.06.08 16:51
Erster Eindruck: Nice :)
Ich hatte auch mal so nen Würfel (allerdings die Hardware-variante :D) und hab das Ding NIE geschafft.
Dein Programm ist ne echte Alternative. Nur mit der Steuerung komm ich noch nicht so ganz klar. Hätte das Drehen des Würfels eher über Strg+Mausbewegung gelöst, aber das ist ja Geschmackssache.
Auf den ersten Blick sind mir auch keine Fehler o. Ä. aufgefallen, daher: Weiter so! :zustimm:
Bergmann89 - Do 26.06.08 16:56
Danke für die Lorbeeren, macht mich gleich ganz verlegen :oops: :lol: :lol:
hab auch gleich noch die Methode mit STRG+Maustaste im neuen Download hinzugefügt.
huuuuuh - Do 26.06.08 17:01
sehr schön :zustimm:
Blackheart666 - Do 26.06.08 17:18
huuuuuh hat folgendes geschrieben: |
| sehr schön :zustimm: |
Sehr Schön was ?
huuuuuh - Do 26.06.08 17:22
ja das programm was sonst?
Yogu - Do 26.06.08 17:50
Hallo,
das macht auf mich erst mal einen ganz guten Eindruck. Mit der Steuerung komme ich nicht ganz klar, aber ich denke, daran kann ich mich gewöhnen. Allerdings macht mir eines zu schaffen: Es werden mehrere Aktionen ausgelöst, obwohl ich die Maustaste immer noch gedrückt halte (nicht losgelassen habe). Dadurch kann es dazu kommen, dass zwei, drei unerwünschte Drehungen ausgeführt werden, die dem Mixen fast gleichkommen. Das ist schade, wenn man es fast geschafft hat (Nein, nein, natürlich habe ich es nicht fast geschafft ;))
Sonst ganz gut.
:zustimm:
Grüße,
Yogu
Bergmann89 - Do 26.06.08 21:41
ja, das hab ich auch schon festgestellt, daran arbeite ich grad.
Das Kommt vom AA, da verschwimmen die Ränder der Würfel und
deshalb selektiert der den falchen würfel und dreht dann die
falche ebene!
um das vorläufig zu beheben einfach im treibermenü die Performance
auf 'Die 3D Anwendung entscheiden lassen' stellen, dann sollte das
gehen!
ich sag bescheid wenn ich das gefixt hab...
[angeben]was das zusammenbauen angeht: ich habs mit nem echten würfel in
1 min, 30 sec geschafft. und er war komplett zerwürfelt[/angeben] :lol:
huuuuuh - Do 26.06.08 21:52
könntest du vielleicht eine speicherfunktion für den aktuellen "spielstand" bzw. zauberwürfelstand einbauen? wär sicherlich ganz hilfreich wenn man sowas nich so schnell löst
Bergmann89 - Fr 27.06.08 00:17
schon geschehen...
DL wie immer im 1. Post
Martok - Fr 27.06.08 00:44
Die mehr oder weniger zufälligen Rotationen nerven. Eventuell solltest du es so machen, dass man die Maus immer neu drücken muss. Sprich nach durchgeführter Rotation so tun als wäre die Maustaste oben.
Wenn man den Lösungsweg kennt, hängt die Lösungsgeschwindigkeit nur noch von der Mechanik ab, deswegen hab ich irgendwann mal aufgehört :lol:
Vielleicht implementierst du ja noch ein schrittweises Lösen, wäre sicherlich interessant zu beobachten ;)
Hidden - Fr 27.06.08 05:49
Featurevorschlag: Eingeben beliebiger "Verwurschtelungen" aus dem realen Leben, bzw. Lösen eines beliebigen Würfels - Rekursives Herumprobieren, dürfte Schnell gehen?
Dann natürlich auch Rückgängigmachen und Wiederholen von Schritten - damit man sich den Lösungsprozess Schritt für Schritt ansehen kann.
huuuuuh - Fr 27.06.08 07:50
es wär ganz schön wenn die anzahl der züge beim klick auf reset auf 0 gehen würde :wink:
Wolle92 - Fr 27.06.08 10:55
Ich schliesse mich meinen Vorrednern an:
-Steuerung etwas komisch, nach einem Zug sollte nicht ein zweiter in der gleichen mausbewegung möglich sein
-Ein Rückgängig-Button wär schön
-Schrittweise berechnung und Anzeige des Lösungsweges
Und ansonsten:
Ich hab keinen Plan, wie man so einen lösen soll^^
Ich hatte mal einen, hatte irgendwann keine lust mehr und hab die farbigen aufkleber abgemacht und so wieder draufgeklebt, das es alles richtig war ;)
huuuuuh - Fr 27.06.08 11:01
das mit den farbigen aufklebern hat meine schwester immer gemacht, irgendwann klebten die aufkleber nich mehr
Wolle92 - Fr 27.06.08 11:38
ich habs nur einmal gemacht ;)
Dieses Programm regt mich sowas von auf!!!
Ich hab keinen Plan, wie das gehen soll^^
elundril - Fr 27.06.08 12:52
geiles Programm. etwas gewöhnungsbedürftige Steuerung aber sonst nicht schlecht!!!
zum lösungsweg: man muss mit einer Farbe anfangen und dann ring für ring abwärts gehen. wenn gewünscht wird kann ich ein kleines Demovideo mit diesem Programm machen und dann posten.
lg elundril
P.s.: ich bevorzug trotzdem noch die Hardware variante da es dort doch noch ein bisschen schneller geht das drehen und so.
Bergmann89 - Fr 27.06.08 12:55
HI,
ich mach mich gleich an die Arbeit, aber das mit dem rekursieven lösen wird wohl nix,
da ich kein plan hab wie ich das machen soll^^
@elundril: ich könnte die einzellnen Züge ja auch in so ner art Tutorial realisieren,
was haltet ihr davon? so kann es jeder lernen!
MfG Bergmann.
elundril - Fr 27.06.08 12:58
jop, wäre auch ne coole idee.
Yogu - Fr 27.06.08 13:14
Hallo,
entweder du hast etwas an der Steuerung verbessert, oder ich hab mich dran gewöhnt. Auf jeden Fall klappt es jetzt viel besser. :D
Die Speichern-Funktion find ich sehr gut, auf ein Mal schaffe ich es sicher nicht. Leider ist mein Computer nicht allzu schnell - der Prozessor wird sehr schnell ausgelastet. Vielleicht findest du ja noch ein paar Stellen, an denen du optimieren kannst. Das wäre schön.
Grüße,
Yogu
elundril - Fr 27.06.08 13:19
was mir noch aufgefallen ist: vielleicht ein Savedialog zum speichern des Würfels???
lg elundril
Hucki - Fr 27.06.08 13:24
Geiles Programm, habe aber noch einen Fehler gefunden wenn man auf Reset klickt wird im Form.Caption nicht die Anzahl der Züge zurückgesetzt.
Bergmann89 - Fr 27.06.08 13:43
@Yogu: was hast du den fürn CPU/Graka und wieviel FPS hat das Prog?
@Hucki: hab ich schon verbessert, bloß noch nich die neue Version hoch geladen,
das mach ich entweder heute abend oder morgen mittag
MfG Bergmann.
Wolle92 - Fr 27.06.08 14:21
Du kannst den doch auch in hardware schnell lösen... da sollte es für dich doch kein problem sein, nen algorithmus zu schreiben, der dir den am PC löst ;)
elundril - Fr 27.06.08 14:27
Wolle92 hat folgendes geschrieben: |
| Du kannst den doch auch in hardware schnell lösen... da sollte es für dich doch kein problem sein, nen algorithmus zu schreiben, der dir den am PC löst ;) |
meinst du mich?
lg elundril
Yogu - Fr 27.06.08 14:39
Hallo,
Prozessor: AMD Athlon(tm) XP 1800+ (1532,5 MHz)
Grafikkarte: Nvidia, nicht gerade neu (mehr weiß ich gerade nicht)
Dein Programm läuft bei 1024x768 mit ca. 22 FPS und bei 800x600 mit 30-50 FPS. Die CPU wird aber zu 60% ausgelastet, was nicht ganz so schön ist. Manchmal sind es auch 100%.
Grüße,
Yogu
Bergmann89 - Fr 27.06.08 15:08
@Yogu: mit performance-optimierung hab ich mich noch nich beschäftigt, aber ma sehen...
@Wolle92: ja ich kann das schnell lösen, aber ich hab ja auch augen und der PC nich^^
da müsste ich erst ne riesen procedure schreiben um herauszufinden wo geeigenete flächen
sind, um dann die ebenen zu drehen! und das is das schwere!
Wolle92 - Fr 27.06.08 15:38
deine augen sehen wo welche farben sind...
genauso kannst du das auch am pc mit nem array machen...
was du beim lösen machst:
du vergleichst verschiedene flächen (da du es kannst, mit system)...
Und das kann der Computer auch mit system machen...
Wenn ich wüsste, wie ich so einen Würfel allgemein lösen könnte, dann würd ich dir ja gerne helfen, aber leider hab ich keinen plan davon ;)
Bergmann89 - Sa 28.06.08 00:56
Ich mach erstma das Tutorial. Das kannst du dir dann angucken und weist dann wie's geht.
Und dann wirst du merken, das da ganz schön viel arbeit dahinter steck das so zu realisieren...
ich hab so n Würfel schonma in 3D gesehen und der hat sich auch selber gelöst. Das war aber
der kürzeste weg der ging, also nich nach meinen System.
MfG Bergmann
Wolle92 - Sa 28.06.08 08:23
wieviel schritte hatte der kürzeste weg denn?
seit Anfang diesen Jahres ist bewiesen, dass der Würfel aus jeder beliebigen Position mit höchstens 23 Schritten gelöst werden kann ;)
Vielleicht findest du irgendwo die Notation dieser oder der 27-Schritte-Methode...
Bergmann89 - Mi 09.07.08 17:15
HI,
hab ne neue Version hoch geladen (siehe 1. Post)
Nun mit Tutorial. Hab auch die unfreiwilligen Drehungen behoben.
@Wolle92: Jetzt kannst du dir ja das Tutorial zu Gemüte führen und wenn du's dann kannst,
sprech'mer nochma über die Solve-Routine^^
MfG Bergmann.
Marc. - Mi 09.07.08 18:23
Hi!
Verschiebt man eine Seite nach nach dem Lösen des Tutorials und klickt anschließend auf den Tut-Button Next-Step ( > ) oder Play erscheint im Sekundentakt die Fehlermeldung, dass der Listenindex das Maximum (20/21) überschreitet.
Solltest den Buttom evlt. deaktivieren oder den Index überprüfen. ;)
cu
Marc
LexXis - Mi 09.07.08 18:36
Yeah, lesen von Adresse 00000000 \o/
Bergmann89 - Do 10.07.08 00:46
@Marc.: fehler behoben
@LexXis: wie jetzt? gleich beim starten? dann bist du der 2. bei dem das passiert.
ich weiß aber nich woran das liegen könnte, erst dachte ich das es das OpenGL wäre,
aber da es ja bei dir vorher ging, kann mann das ja ausschließen. hast du noch die
1. Version, wenn ja kannst du's nochma damit probieren?
MfG Bergmann.
Wolle92 - Do 10.07.08 08:04
also es wird wahrscheinlich an openGL liegen, bei der arbeit hab ich den Fehler auch, zu Hause nicht...
Und das ist nicht das erste OGL-Programm, das bei der arbeit nicht läuft...
Delete - Do 10.07.08 11:40
Ich bekomme beim Start gleich:
| Zitat: |
---------------------------
Zauberwürfel
---------------------------
Zugriffsverletzung bei Adresse 00000000. Schreiben von Adresse 00000000.
---------------------------
OK
---------------------------
|
windows XP, SP2, alle Patches. OpenGL Version kann ich jetzt nicht sagen.
Wolle92 - Do 10.07.08 12:03
Bei mir isses genau wie bei luckie... auch systemmäßig bei der arbeit...
LexXis - Do 10.07.08 16:17
Bergmann89: Ne, hab unglücklicherweise die erste durch die aktuelle Version ersetzt. Der Fehler tritt bei mir beim Starten auf, wenn ich mit der Maus irgendein Control anklicke (auch die Zeichenfläche) und beim Beenden dann gleich nochmal.
Btw: WinXP Prof SP2
Bergmann89 - Do 10.07.08 16:45
Ich kann mir das nur so erklären: ich hab in der neuen Version n FrameBuffer eingebaut, damit ich im hintergrund Rendern kann um so rauszufinden welcher würfel selektiert ist (naja auch ega^^). Auf jedenfall wird der FrameBuffer erst bei OpenGL 1.1 unterstützt. Kannst du es mal mit nem neuen Grakatreiber versuchen, da wird normalerweiße das OpenGL mit geupdatet. Wenn das nich geht mach ich nochma ne Version ohne den FrameBuffer.
MfG Bergmann.
Wolle92 - Do 10.07.08 18:50
hast du mal ne liste von grundzügen bei dem würfel??
von wegen "hier gibts nix was man lernen muss"
edit: hab dich nicht so mit dem algorithmus...
Hab grad ne 4D (!)-Version von dem Würfel gefunden, die hat auch nen algo zum lösen
Lossy eX - 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.
Mitmischer 1703 - Do 10.07.08 20:34
Bei mir hagelt's Zugriffsverletzungen, wegal, was ich mache :( :( :(
Bergmann89 - 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 - 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 [
http://wiki.delphigl.com/index.php/dglOpenGL.pas]. 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. ;)
Wolle92 - Fr 11.07.08 08:28
http://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...
Stübi - 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
Bergmann89 - 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 - 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 - 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 - 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 - 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 - 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.
Yogu - 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? :shock:
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 - 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.
Yogu - So 13.07.08 18:42
Lossy eX hat folgendes geschrieben: |
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. |
Mit der Engine meinte ich nicht OpenGL, sondern eine selbst programmierte oder eine, die jemand anders programmiert hat. Auf jeden Fall etwas, das selbst OpenGL verwendet und die Bedienung vereinfacht. Da wird ja gerne mal OOP angewandt. Aber nun genug zu diesem Thema. :)
Bergmann89 - 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 - 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
Yogu - 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 - 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 - 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 ""; }; |
Bergmann89 - Sa 19.07.08 13:47
HI,
das dürfste doch aber normalerweiße bloß passieren, wenn du eine Kommazahl eingeben willst/musst, aber musst man ja bei mir nich?!
Mfg Bergmann.
<TargeT> - Sa 19.07.08 16:36
Die Resettaste funktioniert nicht, es kommt die Meldung das die Datei "Colors" nicht gefunden werden kann. Ansonsten ganz nett dein Programm.
JKman - Di 05.08.08 14:29
Titel: Immer noch Zugriffsverletzungen
1.Meldung Zugriffsverletzung bei Adresse 69243D0D in Modul atioglxx.dll. Lesen von Adresse 000007BA
2. Meldung Zugriffsverletzung bei Adresse 69243D0D in Modul atioglxx.dll. Lesen von Adresse 000007F9
Benutze aktuelle Version 1.7, Win XP Pro SP3
Kann ich die Fehlermeldung selber abstellen? Im Programmfenster ist nichts vom Würfel zu sehen.
Bergmann89 - Di 05.08.08 16:34
Hi,
hast du's schonma mit dem neusten Treiber für deine Graka probiert? atioglxx.dll klingt für mich nach nem Treiberproblem!
MfG Bergmann.
Lossy eX - Di 05.08.08 18:45
Bergmann89: Muss nicht unbedingt ein Problem im Treiber sein. Wenn du bei einem VBO zum Beispiel falsche Größenangaben machst, dann passiert so was. Denn die Grafikkarte verlässt sich auf die Angaben die man da macht.
JKman: Was hast du denn für eine Grafikkarte und welche OpenGL Version hat sie? Wenn du das nicht genau weißt. Es gibt das Tool
glView [
http://www.realtech-vr.com/glview/index.html]. Damit kann man sich so etwas anzeigen.
Wobei das noch eine Idee für dich Bergmann89 wäre. Also als erstes nach dem Initialisieren ein Log schreiben mit Infos der Grafikkarte. Also Version. Erweiterungen etc. Das kann man dann anhängen und du siehst so recht schnell was das System alles kann.
JKman - Mi 06.08.08 06:53
Renderer: RADEON 9600SE x86/SSE2
Vendor: ATI Technologies Inc.
Memory: 128 MB
OpenGL: Version 2.0.6012 WinXP Release
Core features
v1.1 (100 % - 7/7)
v1.2 (100 % - 8/8)
v1.3 (100 % - 9/9)
v1.4 (100 % - 15/15)
v1.5 (100 % - 3/3)
v2.0 (100 % - 10/10)
v2.1 (0 % - 0/3)
OpenGL driver version check (Current: 6.14.10.6012, Latest known: 6.14.10.4517):
Vermutlich muss ich eine neuere Version installieren.
Dank für den Hinweis.
Lossy eX - Mi 06.08.08 08:30
JKman hat folgendes geschrieben: |
OpenGL driver version check (Current: 6.14.10.6012, Latest known: 6.14.10.4517):
Vermutlich muss ich eine neuere Version installieren. |
Es kann sein, dass die Implementation der FrameBuffer Objects auf deinem System noch in den Kinderschuhen steckt. Das kann ich aber nicht so genau sagen, da ich nicht mehr genau weiß, wann ATI die eingeführt hat und welche Catalyst Version du da hast.
Aber kleine Anmerkung zu den Treibern von ATI. Ab der Catalyst 7.9 haben sie für neuere Hardware einiges umgestellt. Ich hatte vor einiger Zeit auch eine 9600 und mit den Treibern ab 7.9 lief bei mir die Beschleunigung für Direct3D nicht mehr. De Zauberwürfel sollte aber gehen, da er OpenGL benutzt was davon nicht betroffen war. Also solltest du da Probleme haben (kann. muss aber nicht), dann die 7.8 benutzen. Dort sollte (weiß es nicht 100%tig) die Unterstützung für die FrameBuffer Objects auch vernünftig sein. Wenns immer noch kracht liegt das Problem vermutlich wo anders.
JKman - Mi 06.08.08 11:43
Hab Catalyst 8.7 installiert. Fehlermeldungen verschwunden und damit Problem behoben. Zauberwürfel funktioniert jetzt bei mir einwandfrei.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!