OpenGL

Previous topic - Next topic

Sebe

Ich weiss jetzt, warum ich mit GLBasic so schwer zu kämpfen habe: GLBasic ist (oh Wunder) nichts anderes als ein Basic Frontend für OpenGL, dessen Funktionsweise sich mir trotz dutzender Tutorials bisher nicht erschlossen hat. Irgend welche Tricks, wie ihr damit klarkommt? Ich verzweifle nämlich langsam. Blitz3D war kein Problem, ColdSteel Engine auch nicht. Dark Game Development Kit: kein Problem. Irgendwie bin ich einfach diese Strukturierte bzw. Objektorientierte Programmierung mit Funktions/Methodenaufruf zu gewohnt glaube ich...
GLBasic kommt mir dagegen immer ein bisschen wie Assembler vor. Was habe ich nicht kapiert???

Kitty Hello

Hä!? Was ist den an Blitz leichter als an GLBasic? Vielleicht muss ich ja doch was ändern.

Sebe

Ich kann es nicht genau sagen. Bei Blitz hat man aber z.B. Funktionen für relative und absolute Objektmanipulationen, jedes Objekt steht für sich selbst und kann mit den verschiedenen Funktionen beeinflusst werden. Bei GLBasic kommt mir das Alles sehr lose vor. Solange ein Projekt weniger als 100 Zeilen lang ist komm ich noch damit zu Recht, aber dann verliere ich die Übersicht und höre frustriert auf. Bei Blitz war das nie ein Thema, auch beim Dark Game Development Kit (vor allem der .Net Version) nicht. Mir kommt da unweigerlich der Vergleich Assembler <-> C in den Sinn. Assembler ist cool und gut solange das Projekt nicht ausartet. Aber sobald das projekt grösser wird ist C wesentlich einfacher zu handhaben.

Kitty Hello

Dann mach Dir doch ein TYPE mit den Eigenschaften von Deinem Objekt, davon ein Feld (wenn Du mehrere hast) und eine Funktion zum Zeichnen dazu.

Code (glbasic) Select
TYPE AUTO
   pos[3]
   farbe
   texture
ENDTYPE

GLOBAL gAutos[] AS AUTO

DIM gAutos[1]
gAutos[0].texture = 15
...

FUNCTION Draw: a AS AUTO
   X_MOVEMENT a.pos[0, a.pos[1], a.pos[2]
   X_SETTEXTURE a.texture, -1
   X_DRAWOBJ 150, 0
ENDFUNCTION
Mit NewtonDynamics bekommst Du auch wieder so Objekte, die Du nur duch Funktionen verändern kannst. Ich finde das immer bisserl unfelxibel bzw. zu viel Aufwand wenn ich erst eine Funktion aufrufen muss um z.B. zu wissen, wo das Teil ist. Vielleicht lieg' ich da auch falsch.

Wie sehen andere das?

Ich kann ja mal in GLBasic so Wrapper bauen, die den anderen Weg gehen.

Sebe

Das Problem dabei ist, dass man ja im allgemeinen von einer Spieleprogrammiersprache nicht erwartet eine eigene Teilengine schreiben zu müssen. Noch dazu ist der Code sehr schlecht wiederverwertbar, weil die Types ja (bei deinem Beispiel) bereits auf AUTO festgelegt sind. Wenn man schon diesen Weg geht wäre eine Art Containertype bzw. Generic recht schön, mit dem man eine eigene Type-Klasse erstellen und von dieser wieder weitervererben kann. Womit wir dann auch schon wieder bei objektorientierter Programmierung angelangt wären, was du - wie ich mir vorstellen könnte - für GLBasic eigentlich nicht willst.

Kitty Hello

Kann man mit GLBasic ja alles machen. Du kannst ja alle Dark oder Blitz Befehle "nachschreiben". Ich verteh' nur nicht ganz was das bringen soll, weil ich ja zu einem Objekt immer Zusatzinformation brauche (Farbe / Type / Hitpoints), und wenn ich die eh' schon irgendwo halten muss, dann halt' ich da eben auch noch die x,y,z Position von dem Ding.

Kopier doch mal ein Beispiel-Programm in einer anderen (oder Pseudo-)Sprache, damit ich seh' was Du genau meinst. Ich hab nicht wirklich viel mit den endereen Basics gemacht, weil ich damit nicht zurecht kam.