Darstellung eines Polygons mit Direkt3d
Darstellung eines Polygons mit Direkt3d
Hallo,
für mein neues Projekt muss ich einzellne Polygone darstellen können.
Sprite3d ist ja viereckig. Gibt es eine Möglichkeit, gleich direkt mit ein 3eckiges Polygon darzustellen?
Damit währe mit viel geholfen.
für mein neues Projekt muss ich einzellne Polygone darstellen können.
Sprite3d ist ja viereckig. Gibt es eine Möglichkeit, gleich direkt mit ein 3eckiges Polygon darzustellen?
Damit währe mit viel geholfen.
Mit Open GL ja, aber DX/3D krig ich nicht zum laufen.
Ich fände es super wenn jemand schreibt wie es geht.
schohn mal
villeicht gantz nützlich:
http://www.purebasic-lounge.de/viewtopic.php?t=2863
Ich fände es super wenn jemand schreibt wie es geht.
schohn mal
villeicht gantz nützlich:
http://www.purebasic-lounge.de/viewtopic.php?t=2863
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Such mal im CodeArchiv nach "polygon", da dürftest Du was finden.
Gruß, PL.
Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
ahh, gutes Deutsch du sprechen
.
Unter OpenGL ist das afaik einfacher zu handhaben. Ich habe zwar noch
nicht mit DirectX gearbeitet, was mich eigentlich zu der Stellungnahme
disqualifiziert aber ich habe mit OpenGL gearbeitet und es dort als recht
einfach empfunden. Es gab zwar 1-2 Probleme, aber die Leute hier aus
dem Board konnten mir dabei helfen.
Unter OpenGL ist das afaik einfacher zu handhaben. Ich habe zwar noch
nicht mit DirectX gearbeitet, was mich eigentlich zu der Stellungnahme
disqualifiziert aber ich habe mit OpenGL gearbeitet und es dort als recht
einfach empfunden. Es gab zwar 1-2 Probleme, aber die Leute hier aus
dem Board konnten mir dabei helfen.
Ist zwar nicht die schnellste Lösung, aber dafür einfach:
Code: Alles auswählen
#D3DPT_TRIANGLESTRIP=5
#D3DFVF_XYZRHW=4
#D3DFVF_TEX1=256
Structure MyVertex
x.f
y.f
z.f
rhw.f
tu.f
tv.f
EndStructure
;Gibt das Direct3D Device zurück
Procedure GetD3DDevice()
!EXTRN _PB_Direct3D_Device
!MOV EAX,[_PB_Direct3D_Device]
ProcedureReturn
EndProcedure
;Zeichnet ein Triangle strip
Procedure DrawTriStrip(Sprite,*Ptr,NumVertices)
D3DDevice.IDirect3DDevice7=GetD3DDevice()
D3DDevice\SetTexture(0,PeekL(IsSprite(Sprite)))
ProcedureReturn D3DDevice\DrawPrimitive(#D3DPT_TRIANGLESTRIP,#D3DFVF_TEX1|#D3DFVF_XYZRHW,*Ptr,NumVertices,0)
EndProcedure
InitSprite()
InitSprite3D()
OpenWindow(1,0,0,640,480,"D3D7 Triangle strips")
OpenWindowedScreen(WindowID(1),0,0,640,480,0,0,0)
LoadSprite(1,"C:\PB4\Examples\Sources\Data\Background.bmp",#PB_Sprite_Texture)
Dim v.MyVertex(4)
Repeat
ClearScreen(0)
Start3D()
; ein Dreieck zeichnen
v(0)\x=50
v(0)\y=50
v(0)\rhw=1.0
v(0)\tu=0 ; horizontalen texture koordinate (0.0 bis 1.0)
v(0)\tv=0 ; vertikale texture koordinate (0.0 bis 1.0)
v(1)\x=100
v(1)\y=50
v(1)\rhw=1.0
v(1)\tu=1
v(1)\tv=0
v(2)\x=50
v(2)\y=100
v(2)\rhw=1.0
v(2)\tu=0
v(2)\tv=1
DrawTriStrip(1,@v(0),3)
; ein Fünfeck zeichnen
v(0)\x=200
v(0)\y=150
v(0)\rhw=1.0
v(0)\tu=0
v(0)\tv=0
v(1)\x=400
v(1)\y=200
v(1)\rhw=1.0
v(1)\tu=1
v(1)\tv=0
v(2)\x=300
v(2)\y=400
v(2)\rhw=1.0
v(2)\tu=0
v(2)\tv=1
v(3)\x=400
v(3)\y=250
v(3)\rhw=1.0
v(3)\tu=1
v(3)\tv=0.5
v(4)\x=500
v(4)\y=400
v(4)\rhw=1.0
v(4)\tu=1
v(4)\tv=1
DrawTriStrip(1,@v(0),5)
Stop3D()
FlipBuffers()
Until WindowEvent()=#PB_Event_CloseWindow