 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 16.10.2009, 14:54 Titel: Irrlicht läuft mit 2 Screens.. |
|
|
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 |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 17.10.2009, 01:26 Titel: |
|
|
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öwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 17.10.2009, 11:15 Titel: |
|
|
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 |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 17.10.2009, 14:39 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|