![]() |
[DirectX] Dynamisch X-Meshs rendern
Hallo DP,
ich versuche gerade verschieden viele Meshs in eine Szene zu rendern. Dafür habe ich es jetzt schon einmal mit folgendem Code (es ist eine Komponente) probiert:
Code:
Allerings wird das Objekt nicht angezeigt :? Wie schaffe ich jetzt, dass das Objekt angezeigt wird, und wie schaffe ich das jetzt, mehrere Objekte anzeigen zu lassen? Die x-Dateien sollen im Array XFiles liegen und beim hinzufügen/entfernen dementsprechend der Szene hinzugefügt/entfernt werden.
public IntPtr RenderControl;
public String[] XFiles; private Device device; private Mesh m_Mesh; private Material[] m_MeshMaterials; private Texture[] m_MeshTextures; private Vector3 v_CurrMeshPos = new Vector3(); public int Height = 700; public int Width = 300; public bool InitializeGraphics() { PresentParameters pres = new PresentParameters(); pres.Windowed = true; pres.SwapEffect = SwapEffect.Discard; device = new Device(0, DeviceType.Hardware, RenderControl, CreateFlags.SoftwareVertexProcessing, pres); LoadMesh("MeinMesh.x"); return true; } public void Render() { device.Clear(ClearFlags.Target, Color.Silver, 1.0F, 0); device.BeginScene(); InitializeCamera(); InitializeLights(); DrawMesh(v_CurrMeshPos); device.EndScene(); device.Present(); } public void DisposeGraphics() { device.Dispose(); } private void InitializeCamera() { Vector3 cameraPos = new Vector3(0, 0, -150f); Vector3 cameraTarget = new Vector3(); Vector3 cameraUp = new Vector3(0, 1, 0); device.Transform.View = Matrix.LookAtLH(cameraPos, cameraTarget, cameraUp); float fov = (float) Math.PI / 4; float aspectRatio = Width / Height; float zNear = 1; float zFar = 1000; device.Transform.Projection = Matrix.PerspectiveFovLH(fov, aspectRatio, zNear, zFar); } private void InitializeLights() { device.RenderState.Lighting = false; device.RenderState.Ambient = Color.White; } private void DrawMesh(Vector3 v3Position) { device.Transform.World = Matrix.Translation(v3Position); for (int i = 0; i < m_MeshMaterials.Length; i++) { device.Material = m_MeshMaterials[i]; device.SetTexture(0, m_MeshTextures[i]); m_Mesh.DrawSubset(i); } } public void LoadMesh(string file) { ExtendedMaterial[] mtrl; GraphicsStream adj; m_Mesh = Mesh.FromFile(file, MeshFlags.Managed, device, out adj, out mtrl); if ((mtrl != null) && (mtrl.Length > 0)) { m_MeshMaterials = new Material[mtrl.Length]; m_MeshTextures = new Texture[mtrl.Length]; for (int i = 0; i < mtrl.Length; i++) { m_MeshMaterials[i] = mtrl[i].Material3D; if ((mtrl[i].TextureFilename != null) && (mtrl[i].TextureFilename != string.Empty)) { m_MeshTextures[i] = TextureLoader.FromFile(device, directory + mtrl[i].TextureFilename); } } } } |
Re: [DirectX] Dynamisch X-Meshs rendern
Mal Ne dumme Frage, wo wird es denn hineingeladen ? Welche Variable ?
Code:
Meiner bescheidene Ansicht nach fehlt 'ne Variable.
LoadMesh("MeinMesh.x"); // <---<<
Code:
myMesh = LoadMesh("MeinMesh.x"); // <---<<
|
Re: [DirectX] Dynamisch X-Meshs rendern
Er hat doch das Feld m_Mesh deklariert. Diese speichert das (?) Mesh.
|
Re: [DirectX] Dynamisch X-Meshs rendern
Huch, habe ich wohl übersehen:
Code:
:mrgreen: :spin2:
public void LoadMesh(string file)
|
Re: [DirectX] Dynamisch X-Meshs rendern
Dezent *push*
Ich habs immer noch nicht hinbekommen, dass das Mesh gerendert wird. |
Re: [DirectX] Dynamisch X-Meshs rendern
*hochpush*
|
Re: [DirectX] Dynamisch X-Meshs rendern
|
Re: [DirectX] Dynamisch X-Meshs rendern
*push*
|
Re: [DirectX] Dynamisch X-Meshs rendern
Ich hab leider immernoch keine Lösung gefunden... :(
|
Re: [DirectX] Dynamisch X-Meshs rendern
Mein 6. Post in Folge :?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz