Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Irrlicht läuft mit 2 Screens..

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 16.10.2009, 14:54    Titel: Irrlicht läuft mit 2 Screens.. Antworten mit Zitat

Habe jetzt auf der linken Seite den "Screen 18,32" und daneben den Irrlichtscreen. Dieses Demo mit 2 Würfeln wird durch die Mausposition vom Screen 18,32 gesteuert (Screen muss aktiv gesetzt sein), je nachdem , wo sich die Maus dort befindet.
Jetzt hat man einen unabhängigen Steuerungsscreen für das Irrlichtfenster.
Mir ging es darum das Irrlichtfenster möglichs wenig mit Steuerungsdaten auszufüllen, es sollte bei mir im wesentlichen für das irrlichtbild zuständig sein. Man kann auf dem Screen 18,32 auch die zurückgelieferten Daten Grafisch dargestellen .
Auch multikey kann man nutzen.

Irrlicht für FreeBasic zum runterladen:
http://www.freebasic.net/forum/viewtopic.php?t=3584&highlight=irrlciht

Code:

#include "IrrlichtWrapper.bi"
#include "fbgfx.bi"
USING FB

DIM MeshTexture as irr_texture
DIM TestNode as irr_node
DIM TestNode1 as irr_node
DIM OurCamera as irr_camera
Dim delta as single
DIM drehen as single
DIM drehe as single
Dim As Integer new_x, new_y

Screen 18,32
SCREENCONTROL SET_WINDOW_POS, 10,200

IrrStart( IRR_EDT_OPENGL, 400, 400, IRR_BITS_PER_PIXEL_32, _
        IRR_WINDOWED, IRR_NO_SHADOWS, IRR_CAPTURE_EVENTS )

IrrSetWindowCaption( "drehen-kindnodes" )

MeshTexture = IrrGetTexture( "./media/texture.jpg" )

TestNode = IrrAddTestSceneNode
IrrSetNodeMaterialTexture( TestNode, MeshTexture, 0 )
IrrSetNodeMaterialFlag( TestNode, IRR_EMF_LIGHTING, IRR_OFF )

TestNode1 = IrrAddTestSceneNode
IrrSetNodeMaterialTexture( TestNode1, MeshTexture, 0 )
IrrSetNodeMaterialFlag( TestNode1, IRR_EMF_LIGHTING, IRR_OFF )

OurCamera = IrrAddCamera( 0,0,-100, 0,0,0 )

IrrSetNodePosition( OurCamera, 10, 10, -35 )

IrrAddChildToParent( testnode1, testnode)
IrrSetNodePosition( testnode1, 0, 10, 0 )

WHILE IrrRunning
    Sleep 1
   
    IrrBeginScene( 255,255,0 )
   
    If multikey( FB.SC_W ) Then     
    End If
   
    If multikey( FB.SC_S ) Then 
    End If
   
    getmouse new_x, new_y
    drehe = drehe+new_x/10000
    drehen = drehen+new_y/10000
    Locate 1,1: print drehe
    Locate 2,1: print drehen

   IrrSetNoderotation( TestNode, 0,0,drehe)
   IrrSetNoderotation( TestNode1, drehen, 0,0 )
   
   IrrDrawScene
   IrrEndScene
Wend

IrrStop


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 17.10.2009, 01:26    Titel: Antworten mit Zitat

hallo funkeld. das ist ein sehr interessantes Beispiel mit Irrlicht. Danke! Habs eben getestet. Nur das mit der Steuerung des schwarzen Screen 18,32 für die beiden Würfel im gelben Irrlichtfenster geht zwar schon recht gut aber bei mir doch noch recht umständlich per Maussteuerung. Vielleicht muss ich noch mehr üben oder bin einfach zu müde.
Gibt es da noch andere Möglichkeiten der Steuerung der Würfel ?
Ansonsten ein richtig gutes Beispiel. Danke ! lächeln

löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 17.10.2009, 11:15    Titel: Antworten mit Zitat

Hallo, das war nur ein kleiner Test, wie man vom normalen Screen aus den Irrlichtscreen beeinflussen kann.
Die Mausposition auf Screen 18,32 bestimmt die Drehung der Würfel bei Irrlicht.
Du kannst in der Irrlichtschleife alle Befehle reinbringen, die vom Screen 18,32 aus kommen. Wie vorher gesagt, muss dieser Screen 18,32 aktiv sein.
Der Irrlichtscreen arbeitet unaktiv, bzw nimmt unaktiv die Befehle entgegen.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 17.10.2009, 14:39    Titel: Antworten mit Zitat

Hallo, löwenherz.
Hier ist ein Programm, wo man sich mit den Tasten:
E,R,D,F,C,V,T,Z,G,H,B,N durch das Terrain bewegen kann.

Setze den kleinen Screen links aktiv mit einem Mausklick im Screen und bediene die Tasten und schon fliegt man im Irrlichtfenster durch das Terrain. Das Terrain ist einfach gestaltet.

Mit verschiedenen Bewegungsmustern wie beim Fliegen.
In der Hilfe die bei Irrlicht dabei ist, kannst du es noch einmal verfolgen.
Ist schon eine starke Sache, wie einfach Irrlicht mit Freebasic funktioniert.

Code:


#include "IrrlichtWrapper.bi"
#include "fbgfx.bi"
USING FB

DIM Terrain as irr_terrain
DIM TerrainNode as irr_node
DIM TerrainTexture0 as irr_texture
DIM Camera as irr_camera
DIM CameraNode as irr_node

dim x as single
dim y as single
dim z as Single
dim cx as single
dim cy as single
dim cz as Single
dim ccx as single
dim ccy as single
dim ccz as Single

ScreenRes 300,200,32
SCREENCONTROL SET_WINDOW_POS, 10,200

IrrStart( IRR_EDT_OPENGL, 640, 480, IRR_BITS_PER_PIXEL_32, _
        IRR_WINDOWED, IRR_SHADOWS, IRR_IGNORE_EVENTS )

IrrSetWindowCaption( "terrain-test" )

Terrain = IrrAddTerrain( "./media/terrain-heightmap.bmp" )
TerrainNode = Terrain
IrrSetNodeScale( TerrainNode, 40.0, 2.4, 40.0 )

TerrainTexture0 = IrrGetTexture( "./media/terrain-texture.jpg" )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture0, 0 )

IrrScaleTexture( Terrain, 1.0, 60.0 )
IrrSetNodeMaterialFlag( TerrainNode, IRR_EMF_LIGHTING, IRR_Off )
   
CameraNode = IrrAddCamera( 0,0,0, 0,0,0 )

x=1865
y=377
z=2451
IrrSetNodePosition( CameraNode, x,y,z )

While IrrRunning
   
    IrrBeginScene( 64, 100, 125 )
   
    If multikey( FB.SC_e ) Then   
        cx=cx-0.00001
    End If   
    If multikey( FB.SC_r ) Then   
        cx=cx+0.00001
    End If
    If multikey( FB.SC_d ) Then   
        cy=cy+0.00001
    End If
    If multikey( FB.SC_f ) Then   
        cy=cy-0.00001
    End If
    If multikey( FB.SC_c ) Then   
        cz=cz-0.00001
    End If
    If multikey( FB.SC_v ) Then   
        cz=cz+0.00001
    End If
   
    If multikey( FB.SC_t ) Then   
        ccx=ccx+0.01
    End If   
    If multikey( FB.SC_y ) Then   
        ccx=ccx-0.01
    End If   
    If multikey( FB.SC_g ) Then   
        ccy=ccy+0.01
    End If
    If multikey( FB.SC_h ) Then   
        ccy=ccy-0.01
    End If
    If multikey( FB.SC_b ) Then   
        ccz=ccz+0.01
    End If
    If multikey( FB.SC_n ) Then   
        ccz=ccz-0.01
    End If
   
    If multikey( FB.SC_0 ) Then   
        cx=0
        cy=0
        cz=0
       ccx=0
        ccy=0
        ccz=0
    End If
   
    IrrRevolveCamera(CameraNode, cx,cy,cz, ccx,ccy,ccz )
   
    IrrDrawScene
    IrrEndScene
WEND

IrrStop
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz