DreiDe - 3D Engine basierend auf OpenGL
Übersicht

Gehe zu Seite Zurück 1, 2, 3, 4, 5, 6, 7, 8, 9 Weiter
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://vertex.art-fx.org/dreide221.zip neues Fehlersystem wurd eingeführt und der Clampbug beseitigt. Weiterhin werde ich jetzt Versionsnummern dran hängen. 221 = Version 2.21
mfg olli Edit: Nimmt mal bei example.bmx glEnable(GL_LIGHTING) raus, sieht gleich viel besser aus. |
||
vertex.dreamfall.at | GitHub |
![]() |
YellowRiderEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Großen Respekt! Hoffentlich wird das was und du wirst nicht mehr durch allzu vielen bugs aufgehalten ![]() cya YR |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Funktioniert jetzt ohne Probleme ![]() Zum Fehlersystem (nur ein Vorschlag ![]() Da gäbe es noch die Möglichkeit mit Throw "Message". Da wird dann automatisch eine Messagebox erzeugt, aber wem das nicht zusagt kann dann mit Try Catch den Fehler abfangen und eine eigene Fehlerbehandlung programmieren. Bsp.: In deiner Engine: Code: [AUSKLAPPEN] If etwas = nicht gut then Throw <String oder Objekt mit Informationen zum Fehler> Endif Benutzercode: Code: [AUSKLAPPEN] Try Texture.SetCubeFace(DDD_TEXTURE_POSX) Texture.SetPixmap(Pixmap) ... usw. Catch exception:Object 'Fehlerbehandlung vom Benutzer If String(exception) Then Notify(String(exception)) 'Oder wenn du dafür nen eigenen Exception Type gemacht hättest Local ex:CubeMapException = CubeMapException(exception) If ex <> Null Notify ("Fehler bei " + ex.Face + ", " + ex.ErrorMessage) 'etc. Endif End Try |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Throw is eigentlich eher gedacht um "gescheite" Fehlermeldungen an Catch zu liefern, da sonst nur ein Standarderror dort angekommt, den man mit exception.tostring () dann ausgibt (in deinem Beispiel unten)
Hinzu kommt: wenn man schon weiss, dass ein Error da ist, warum dann "fatal kill" durchführen? Sprich wenn man mit "if" nen Error erkennen kann und ihn nicht ausbügelt sollte man proggen lassen ![]() So hat seit Win98/ME und MS glaub niemand mehr "Fehler" beseitigt ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh man, mit Try und Catch habe ich mich nie beschäftigt, geschweige denn verstanden. Aber hört sich doch ganz gut an, muss ich halt mal ausprobieren. Event. logge ich gleich die Fehler in ner Liste mit.
Als nächstes wird denke ich ein 3DS Loader kommen. Habe mir schon mal in BlitzBasic ein kleinen Chunkviewer gemacht. Lässt sich recht gut umsetzen. Ich mache heute in Urlaub für 2 Wochen. Also nicht wundern, wenn nix weiter geschieht. mfg olli Edit: Ich wollte ja noch nen Screenshot mit Spheremapping zeigen: ![]() Edit2: Hier der erste Ansatz des 3DS Loaders, funzt aber noch nicht! Code: [AUSKLAPPEN] Code ist unnötig
Habe keine Zeit mehr zum Debuggen. Hier mein Alter BlitzBasic Code der geht: Code: [AUSKLAPPEN] Code ist unnötig
|
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Mo, Jul 18, 2005 14:21, insgesamt einmal bearbeitet
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: Throw is eigentlich eher gedacht um "gescheite" Fehlermeldungen an Catch zu liefern,
Stimmt, aber ohne Throw kommt ja gar kein Catch zu stande. Ausser natürlich die Memory Exception, weil das in BMax intern ausgelöst wird (Aber ist eigentlich auch nur ein Throw). Wenn da intern nirgends ein Throw wäre, würde man gar nie im Catch landen ausser man macht selber irgendwo ein Throw. Mit den Fehlern beheben statt Kill stimm ich dir natürlich zu ![]() Letzteres wär in diesem Fall wahrscheinlich schon besser ![]() Einige Fehlermeldungen jedoch möchte man vielleicht den Benutzern zugänglich machen damit sie unterschiedlich darauf reagieren können. Das verlangt jedoch von den Benutzern dass sie Try Catch benutzen, weil das Programm sonst ja auch gleich wieder abstürzen würde bei einem Fehler. (Unhandled "Eigene Exception") Aus diesem Grund wurde in Bmax möglichst auf Throw verzichtet und bei Funktionen mit Hilfe von Rückgabewerten gelöst weil das ja auch für Anfänger möglichst einfach sein soll, denke ich. Bei .Net zum Beispiel wird aber für jeden Mist Throw benutzt. Wenn man eine Datei öffnen will und diese nicht existiert wird gleich eine FileNotFoundException ausgeworfen. Wenn man diese nicht mit Try Catch abfängt schmiert das Programm ab. Hat halt seine Vor- und Nachteile ![]() |
||
- Zuletzt bearbeitet von Jolinah am Mo, Jul 18, 2005 11:41, insgesamt 2-mal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja immerhin rennt .NET nicht in eine endlosloop wenn du mit loadimage ein bild versuchst zu laden, dass nicht existiert. Das tut BM nämlich, wenn man die fertige exe startet und nicht von der IDE aus ... -> try catch is nett aber das aktuelle Error Handling und Debugging System von BM lässt noch SEHR zu wünschen übrig ... | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber nur bei Debug build. Im Release beendet sich das Programm einfach wieder. Das Problem scheint auch nicht beim laden aufzutreten. Versuche ich ein Bild zu laden dass nicht existiert und zeichne dann ein Viereck mit Drawrect gehts ohne Probleme. Zeichne ich jedoch dieses Bild das ja Null ist weil es nicht geladen werden konnte kommt diese Endlos-Schleife.
So Dinge muss halt der Programmierer selbst abfangen. |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super, habe jetzt noch schnell den Bug gefunden. (Einfach unglaublich, das ich noch zu meinem 18. Geburtstag vorn PC sitze. Heute muss ersteinmal viel gesoffen werden!)
Materialien werden noch nicht geladen, und Normals nicht berechnet. Dafür wird das Mesh erstellt mit samt Surfaces. Code: [AUSKLAPPEN] Strict
Import Brl.FileSystem Import "Mesh.bmx" Import "Surface.bmx" Import "Material.bmx" Import "Texture.bmx" Const DDD_3DS_MAIN = $4D4D Const DDD_3DS_3DEDITOR = $3D3D Const DDD_3DS_OBJECTBLOCK = $4000 Const DDD_3DS_TRIMESH = $4100 Const DDD_3DS_VERTEXLIST = $4110 Const DDD_3DS_FACELIST = $4120 Const DDD_3DS_TEXCOORDS = $4140 Const DDD_3DS_MATERIALBLOCK = $AFFF Type T3DSLoader Field Stream : TStream Field ChunkID : Short Field ChunkSize : Int Field Surface : TSurface Field VertexCount : Int Field TriangleCount : Int Field Mesh : TMesh Field Materials : TList Method ReadChunk() Self.ChunkID = Self.Stream.ReadShort() Self.ChunkSize = Self.Stream.ReadInt() End Method Method ScipChunk() Self.Stream.Seek(Self.Stream.Pos()+ChunkSize-6) End Method Method ReadCString:String() Local Char:Byte, CString:String While Not Self.Stream.Eof() Char = Self.Stream.ReadByte() If Char = 0 Then Exit CString :+ Chr(Char) Wend Return CString End Method Method ReadVertexList() Local Index:Int, Position:Float[3] Self.VertexCount = Self.Stream.ReadShort() For Index = 0 To Self.VertexCount-1 Position[0] = Self.Stream.ReadFloat() Position[1] = Self.Stream.ReadFloat() Position[2] = Self.Stream.ReadFloat() Self.Surface.CreateVertex(Position[0], Position[2], Position[1]) Next Self.Surface.UpdateVertices() End Method Method ReadFaceList() Local Index:Int, Indices:Int[3], FaceListEnd:Int FaceListEnd = Self.Stream.Pos()+Self.ChunkSize Self.TriangleCount = Self.Stream.ReadShort() For Index = 0 To Self.TriangleCount-1 Indices[0] = Self.Stream.ReadShort() Indices[1] = Self.Stream.ReadShort() Indices[2] = Self.Stream.ReadShort() Self.Stream.ReadShort() Self.Surface.CreateTriangle(Indices[2], Indices[1], Indices[0]) Next Self.Surface.UpdateTriangles() End Method Method ReadTexCoords() Local Count:Int, Index:Int, U:Float, V:Float Count = Self.Stream.ReadShort() For Index = 0 To Count-1 U = Self.Stream.ReadFloat() V = Self.Stream.ReadFloat() Self.Surface.SetVertexTexCoords(Index, U, V) Next Self.Surface.UpdateVertices(False, False, True, False, False) End Method Method ReadTriMesh() Self.Surface = Self.Mesh.CreateSurface() End Method Method ReadObjectBlock() DebugLog("3DS ObjectName: "+Self.ReadCString()) End Method Method ReadMaterialBlock() Self.ScipChunk() End Method Method New() Self.Mesh = Null Self.Materials = New TList End Method Function Load:TMesh(URL:Object) Local Loader:T3DSLoader, Size:Int Loader = New T3DSLoader Loader.Stream = ReadFile(URL) If Loader.Stream = Null Then Return Null Size = Loader.Stream.Size() ' Read MainChunk Loader.ReadChunk() If (Loader.ChunkID <> DDD_3DS_MAIN) Or (Loader.ChunkSize <> Size) Then Loader.Stream.Close() Return Null EndIf ' Find 3DEditor-Chunk While Not Loader.Stream.Eof() Loader.ReadChunk() If Loader.ChunkID = DDD_3DS_3DEDITOR Then Exit Else Loader.ScipChunk() EndIf Wend Loader.Mesh = New TMesh While Not Loader.Stream.Eof() Loader.ReadChunk() Select Loader.ChunkID Case DDD_3DS_OBJECTBLOCK Loader.ReadObjectBlock() Case DDD_3DS_MATERIALBLOCK Loader.ReadMaterialBlock() Case DDD_3DS_TRIMESH Loader.ReadTriMesh() Case DDD_3DS_VERTEXLIST Loader.ReadVertexList() Case DDD_3DS_FACELIST Loader.ReadFaceList() Case DDD_3DS_TEXCOORDS Loader.ReadTexCoords() Default Loader.ScipChunk() End Select Wend Return Loader.Mesh End Function End Type |
||
vertex.dreamfall.at | GitHub |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gute Arbeit, und alles gute zum Geburtstag! ![]() |
||
![]() |
Henry |
![]() Antworten mit Zitat ![]() |
---|---|---|
Herzlichen Glückwunsch...zum Geburtstag und zum Mesh Loader!!! 8) | ||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
![]() |
jungle |
![]() Antworten mit Zitat ![]() |
---|---|---|
@vertex
...dann auch mal einen herzlichen glückwunsch zum 18. ![]() seit der ersten dreide version für bmax bekomme ich die gleiche fehlermeldung, hatte gehofft das es mit einer neueren version von dreide klappt. ![]() ich drücke auf die f5 taste und es kommt folgende fehlermeldung. Compile Error Can´t find interface for module 'pub.dreide' ich nutzte bmx 1.10 inkl. aktueller modules. ...und ja, ich habe den ordner dreide.mod in den pub.mod folder von bmax kopiert. woran kann es liegen ? danke für eine antwort jGL |
||
In der Realität ist die Wirklichkeit ganz anders.
| P3 550Mhz | P90Mhz | AMD 1Ghz | XP 2600@3200Mhz l P2 400Mhz | Dual XP 2000Mhz | |
![]() |
Henry |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Modul scheint nicht kompiliert zu sein. Führe ein "Build Modules" aus und es sollte gehen. | ||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Auch meinen Glückwunsch zum immer besser werdenden 3D Modul und zum 18 en . Freue mich schon auf den fertigen 3ds Loader und wollte eigentlich noch anmerken das du am besten immer eine fertig Kompilierte Version von DreiDe hochlädst. Mit fast 1.5 MB kann man diese Idee aber getrost in die Tonne kloppen. Also immer weiter, freue mich! Übrigens jetzt alles Fehlerfrei Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
grafbonBetreff: ach shieet |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bin ja sooooo deprimiert...
da hab ich doch mit 17 oder so mal mit OpenGL rumgespielt. was hab ich in der Zwischenzeit bloss gemacht? Jetzt bin ich 23 und weiss von OpenGL immer noch nicht mehr, als wie man eine textur ladet....oder so ![]() Und der da liefert gleich ne komplette engine. Also ich liefere dann auch mal ne engine. hmm. aber ne game-engine, nicht nur ne 3dengine. hehe....keymap-modul ist schon mal fertig. (dafuer wird wohl die 3d-engine crap sein ![]() sorry fuer das geheule, aber langsam komm ich mir recht richtig sehr sehr unnütz vor in dieser welt. keine ausbildung, kein job, und das einzige was ich kann ist vorm komphuter hocken und dämlicher sein als alle anderen....so wies aussieht. |
||
![]() |
jungle |
![]() Antworten mit Zitat ![]() |
---|---|---|
@henry @all
hi, also ich habe mir jetzt mal MinGW-3.1.0-1 installiert. die umgebungsvariable 'mingw = c:\mingw' gesetzt und versucht die 'build module' funktion zum laufen zu kriegen. leider ohne erfolg ![]() wenn ich 'build modules' oder 'rebuild all modules' ausführe ploppt sehr schnell das output tab mit dem inhalt: -------- Building Modules Compiling:blitz_app.c Process complete -------- auf. das wie gesagt sehr schnell <1sek. demensprechend wurde auch nicht re-builded. was habe ich noch vergessen ? danke nochmals. jGL |
||
In der Realität ist die Wirklichkeit ganz anders.
| P3 550Mhz | P90Mhz | AMD 1Ghz | XP 2600@3200Mhz l P2 400Mhz | Dual XP 2000Mhz | |
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuch mal :
bmk makemods -r pub.dreide bmk makemods -d pub.dreide in der DOS Eingabeaufforderung |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hast du bei path den pfad zum mingw\bin verzeichnis auch hinzugefügt? | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
jungle |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke jetzt hat es geklappt | ||
In der Realität ist die Wirklichkeit ganz anders.
| P3 550Mhz | P90Mhz | AMD 1Ghz | XP 2600@3200Mhz l P2 400Mhz | Dual XP 2000Mhz | |
![]() |
jungle |
![]() Antworten mit Zitat ![]() |
---|---|---|
@dremora
ich habe nur 'mingw = c:\mingw' als umgebungsvarible gesetzt. |
||
In der Realität ist die Wirklichkeit ganz anders.
| P3 550Mhz | P90Mhz | AMD 1Ghz | XP 2600@3200Mhz l P2 400Mhz | Dual XP 2000Mhz | |
Gehe zu Seite Zurück 1, 2, 3, 4, 5, 6, 7, 8, 9 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group