MeshTerrain mit DirectX Triangles
Übersicht

MatthiasBetreff: MeshTerrain mit DirectX Triangles |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay. Leztens hatte ich hier im BMaxForum eine sehr schöne hilfe zu dem Thema ein Images verschieben bekommen. Allerdings wurden dazu Befehle benutzt die in BMax überhaupt nirgendswo zu finden sind.
Und nun meine Frage wo bekommt mann mehr informationen über diese versteckten Befehle her. Ersteinmal der Code. Code: [AUSKLAPPEN] SuperStrict Graphics( 800, 600, 0 ) Local image:TImage = LoadImage( "test.bmp" ) Global driver:TD3D7Max2DDriver = D3D7Max2DDriver( ) Global dev:IDirect3DDevice7 = driver.device While( Not( KeyDown( KEY_ESCAPE ) Or AppTerminate( ) ) ) Cls DrawFreeformImage( image, [100.0, 100.0], [500.0, 100.0], [700.0, 500.0], [300.0, 500.0], 0 ) Flip Wend Function DrawFreeformImage( image:TImage, v1:Float[], v2:Float[], v3:Float[], v4:Float[], frame:Int ) If Not image Return Local verts:Float[24] Local color:Int = driver.drawcolor verts[0] = v1[0]; verts[1] = v1[1] verts[2] = 0 verts[3] = Float Ptr( Varptr color )[0] verts[4] = 0; verts[5] = 0 verts[6] = v2[0]; verts[7] = v2[1] verts[8] = 0 verts[9] = Float Ptr( Varptr color )[0] verts[10] = 1; verts[11] = 0 verts[12] = v3[0]; verts[13] = v3[1] verts[14] = 0 verts[15] = Float Ptr( Varptr color )[0] verts[16] = 1; verts[17] = 1 verts[18] = v4[0]; verts[19] = v4[1] verts[20] = 0 verts[21] = Float Ptr( Varptr color )[0] verts[22] = 0; verts[23] = 1 driver.SetActiveFrame( TD3D7ImageFrame( image.frame( frame ) ) ) dev.DrawPrimitive( D3DPT_TRIANGLEFAN, D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1, verts, 4, 0 ) End Function Der Code ist von ProGamer.Coder Ich möchte gerne eine 3DLandschaft machen. Die allerdings immer nur aus der Vogelperspecktive zu sehen ist. Aber drozdem noch Zoombar bleibt. Sicherlich könnte mann dafür ein Images benutzen aber leider verbrauchen diese für ein sehr großes Land viel zu viel GFXSpeicher. Und auch Tiles scheiden aus denn sie wiederholen sich dauernt, und das will ich auch nicht. Mehr so eine art MeshTerrain (Blitz3D) das wäre Ideal. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ganze wird immer genau gleich viel Grafikspeicher verbrauchen, nämlich soviel wie du Bilddaten + VertexDaten hast
und die VertexDaten sind dabei vernachlässigbar. Tiles und ein 3D Terrain sind aus der Vogelperspektive EXAKT das gleiche, da es keine Höhe gibt womit du das identische Resultat hast. Wenn sich Tiles zu viel wiederholen ist einfach deine Map schlecht. Denn ein Multiblend Terrain wie es mit höherstehenden Meshterrains (normale Meshterrains sind nämlich nichts anderes als 3D Tiles) in blitz3d gemacht wird kannst du nicht erzeugen mit den Standard Befehlen, dazu musst du von Max2D wegwechseln auf eine 3D Engine oder dir selbst eine Schreiben. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am Do, Sep 06, 2007 14:46, insgesamt einmal bearbeitet
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Matthias hat Folgendes geschrieben: wo bekommt mann mehr informationen über diese versteckten Befehle her.
Bei allen Modulen ist ja der Source dabei. Darin findet man jede Menge interessante Sachen. ![]() Die Module sind aber nicht alle in BlitzMax geschrieben. Die Systemmodule und MaxGUI sind C++ und manche sind auch mit beiden Sprachen gemacht. Auf jeden Fall brauchst du etwas Zeit, wenn du den Code von Sibly verstehen willst. Der ist nämlich an manchen Stellen ziemlich verwirrend. ![]() |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für den Tipp.
Ich habe den Befehl: driver.SetActiveFrame tatsächlich unter d3d7max2d.bmx gefunden. Ich werde mich mal damit mehr befassen. Ich finde zwar gut das BMax viel schneller als Blitz3D ist so vom rechnen her aber das das 3DFehlt. also das finde ich garnicht so gut. d3d7 Heißt das das die 3D Befehle auf DirektX7 beruhen. Ich dachte immer BMax hat schon DirektX8. |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Ich dachte immer BMax hat schon DirektX8.
Nö! ![]() Es gibt aber ein DirectX9-Modul für Max2D in der englischen Community. So weit ich weiß, ist das aber noch nicht fertig. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Max2D selbst ist T&L compliant, das heisst DX7 und OpenGL 1.2 werden genutzt für Max2D
Das heisst aber nicht das höheres nicht da ist: Pub.GLEW für Features höherer OpenGL Versionen und entsprechenden Definitionen für DX9 ABER: Wenn du sie nutzen willst, musst du eigene Funktionen dafür schreiben oder einen weiteren Max2D Treiber der sie nutzt. Wie von hectic erwähnt gibt es einen DX9 Driver für Max2D, geschrieben von einem User. Aber das wars dann auch schon. Das Problem ist viel mehr kann man da nicht rausholen ohne einen grundlegenden Rewrite. Ursache ist, dass Max2D keine "Tiefe" unterstützt, so das man Single Surface Optimierungen machen könnte. Das hat auch BRL herausgefunden als sie einen Batch Driver integriert haben, der langsamer war als der normale 2D Driver ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Wie von hectic erwähnt gibt es einen DX9 Driver für Max2D
Hm? ![]() ![]() Zitat: als sie einen Batch Driver integriert haben
Davon wusste ich gar nichts. Ist der denn jetzt schon fortgeschrittener? Oder würde es sich lohnen, selbst einen zu schreiben? |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich meine natürlich ProGamer.Coder ![]() Und der Driver wurde komplett rausgekickt. Das war vor dem DX7 Driver Rewrite in 1.24 Und es macht keinen sinn so etwas zu schreiben. Ohne echte Tiefenwerte kannst du in 2D nicht gescheit batchen, da die zeichenreihenfolge elementar ist. Damit hat es sich dann auch mit Batching -> Surface Reduction. (aktuell ist ja jedes Image ne eigene Surface) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group