Ernsthaft Bloedes Problem

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Gigapoly

Betreff: Ernsthaft Bloedes Problem

BeitragSa, Jul 18, 2009 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist mit meiner EnableOpenGL3D Funktion nicht richtig?
Ohne Transformation sieht alles richtig aus doch die X axis is gespiegelt sobals Ich die Kamera bewege.

Ich sitzte schon seit ueber einer Woche an diesem Problem.
Code: [AUSKLAPPEN]

Framework leadwerks.engine

Function EnableOpenGL3D(camera:TCamera)
   glMatrixMode(GL_PROJECTION)
   glEnable GL_DEPTH_TEST
   glLoadIdentity()
   Local nearRange:Float
   Local farRange:Float
   nearRange = camera.nearRange
   farrange = camera.farRange
   gluPerspective(90, Float(GraphicsWidth()) / Float(GraphicsHeight()), nearRange, farRange)

   glMatrixMode(GL_MODELVIEW)
   glLoadIdentity()

   from:TVec3 = EntityPosition(camera)
   zu:TVec3 = Vec3(0, 0, 1)
   zu = TFormVector(zu, camera, Null)
   zu.X = zu.X + from.X
   zu.Y = zu.Y + from.Y
   zu.Z = zu.z + from.Z

   gluLookAt(from.X, from.Y, from.Z, zu.X, zu.Y, zu.Z, 0.0, 1.0, 0.0)
   
End Function

   RegisterAbstractPath AppDir
   
   Graphics 640, 480
   CreateWorld()
   Global Buffer:TBuffer = CreateBuffer(640, 480, BUFFER_COLOR0 | BUFFER_DEPTH | BUFFER_NORMAL)

   '// ======= Entity creation =======
   Global light:TLight = CreateDirectionalLight()  '// Light
   RotateEntity (Light, Vec3(90, 0, 0))

   Global camera:TCamera = CreateCamera() '/ / Camera
   MoveEntity(camera, Vec3(0, 0, -2))

   Global cube:TMesh = CreateCube()                '// Cube

   Global ground:TMesh = CreateCube()             '// Floor
   ScaleEntity(Ground, Vec3(2, 1, 2))
   MoveEntity(ground, Vec3(0, -1.5, 0))

   While Not KeyHit(KEY_ESCAPE)
   
      '// ======= Update =======
      TurnEntity(cube, Vec3(0.1, 0.1, 0.1))

      If(KeyDown(KEY_W)) MoveEntity(camera, Vec3(0, 0, 0.05))
      If(KeyDown(KEY_S)) MoveEntity(camera, Vec3(0, 0, -0.05))

      If(KeyDown(KEY_A)) MoveEntity(camera, Vec3(-0.05, 0, 0))
      If(KeyDown(KEY_D)) MoveEntity(camera, Vec3(0.05, 0, 0))

      If(KeyDown(KEY_PAGEUP)) MoveEntity(camera, Vec3(0, 0.05, 0))
      If(KeyDown(KEY_PAGEDOWN)) MoveEntity(camera, Vec3(0, -0.05, 0))
      If(KeyDown(KEY_HOME)) TurnEntity(camera, Vec3(0.2, 0, 0))
      If(KeyDown(KEY_END)) TurnEntity(camera, Vec3(-0.2, 0, 0))
      If(KeyDown(KEY_LEFT)) TurnEntity(camera, Vec3(0, 0.2, 0))
      If(KeyDown(KEY_RIGHT)) TurnEntity(camera, Vec3(0, -0.2, 0))

      '// ======= 3D rendering =======
      UpdateWorld
     SetBuffer Buffer
      RenderWorld
      SetBuffer BackBuffer()
     RenderLights(Buffer)
     SetBuffer BackBuffer()

      EnableOpenGL3D(camera)

      glColor3f(1, 0, 0)
      glBegin(GL_LINE_STRIP)
         glVertex3f(-1, -5, -1)
         glVertex3f(-1, 5, -1)
      glEnd()
     glBegin(GL_LINE_STRIP)
         glVertex3f(-1, -5, 1)
         glVertex3f(-1, 5, 1)
      glEnd()
     glBegin(GL_LINE_STRIP)
         glVertex3f(1, -5, 1)
         glVertex3f(1, 5, 1)
      glEnd()
     glBegin(GL_LINE_STRIP)
         glVertex3f(1, -5, -1)
         glVertex3f(1, 5, -1)
      glEnd()
    
     'SetBuffer BackBuffer()

      '// 2D
      GLDrawText("Hello World!", 32, 32)


      '// ======= Screen Update =======
      Flip()
   Wend
   End

BtbN

BeitragSa, Jul 18, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, du solltest das eher im Leadwerks-Forum fragen als hier.
 

Gigapoly

BeitragSa, Jul 18, 2009 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, aber die kriegen dieses auch nicht geloest. Die Thread ist schon ziemlich alt und ohne Loesungsansaetze.
Es sollte auch mit MiniB3D oder jede andere Form von Kamera als Entity Type funktionieren.
 

Gigapoly

BeitragSo, Jul 19, 2009 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Geloest!!

Hier is die Loesung: http://www.gigapoly.com/?p=151
http://www.gigapoly.com

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group