Ich weiss, zu diesem Thema gibts schon etliche Threads, aber leider muss ich noch einen posten, weil ich einfach nicht die gewünschte Textur auf mein Mesh bekomme. (Code von Danilo leicht abgeändert):
Code: Alles auswählen
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1501&start=10
; Author: Danilo (updated for PB 4.00 by ste123)
; Date: 05. July 2003
; OS: Windows
; Demo: Yes
If InitEngine3D() And InitSprite() And InitKeyboard()
OpenWindow(0,0,0,640,480,"3D Mesh Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
BigFont = LoadFont(1,"Arial",38)
Add3DArchive("\", #PB_3DArchive_FileSystem)
; Viereck
CreateMesh(1,30)
SetMeshData(1,#PB_Mesh_Vertex ,?Ecken , 4) ; 4 Ecken
SetMeshData(1,#PB_Mesh_Face ,?Viereck , 2) ; 4 Dreiecke (Vorder- und Rueckseite)
SetMeshData(1,#PB_Mesh_UVCoordinate ,?TexturKoordinaten, 4)
CreateMaterial(0, LoadTexture(0,"g88im13o6int.png"))
;CreateEntity(1, MeshID(1), #PB_Material_None)
CreateEntity(1, MeshID(1), MaterialID(0))
ScaleEntity(1,4,4,4): MoveEntity(1,-3,0,0)
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,10)
CameraLookAt(0, EntityX(1),EntityY(1),EntityZ(1))
;CameraRenderMode(0, #PB_Camera_Wireframe)
CameraRenderMode(0, #PB_Camera_Textured)
Repeat
ExamineKeyboard()
Select WindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
rot=1:RotateEntity(1,rot*0.1,rot*0.1,rot*0.1, #PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit
Else
MessageRequester("Error", "Cant init DirectX 3D Engine",0)
EndIf
End
DataSection
Ecken:
Data.f -1, -1, 0 ; Ecke 0 3-----2
Data.f 1, -1, 0 ; Ecke 1 | . |
Data.f 1, 1, 0 ; Ecke 2 | |
Data.f -1, 1, 0 ; Ecke 3 0-----1
TexturKoordinaten:
Data.f 0,1 ; Vertex 0
Data.f 1,1 ; Vertex 1
Data.f 1,0 ; Vertex 2
Data.f 0,0 ; Vertex 3
Viereck:
Data.w 0, 1, 2 ; Dreieck 1 besteht aus den Ecken 0, 1 und 2
Data.w 2, 3, 0 ; Dreieck 2 besteht aus den Ecken 2, 3 und 0
; = 1 Viereck Vorderseite
;Data.w 0, 3, 2 ; Dreieck 1 besteht aus den Ecken 0, 3 und 2
;Data.w 2, 1, 0 ; Dreieck 2 besteht aus den Ecken 2, 1 und 0
; = 1 Viereck Rueckseite
EndDataSection
Was mache ich da falsch ??? Und noch eine Bitte : Wozu sind die Meshnormals (und wie berechne ich die) und Meshcolors da ??? guter Link mit Erklärung wäre nett. Dankeschön !