AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia C# [DirectX] Dynamisch X-Meshs rendern
Thema durchsuchen
Ansicht
Themen-Optionen

[DirectX] Dynamisch X-Meshs rendern

Ein Thema von TurboMartin · begonnen am 11. Okt 2008 · letzter Beitrag vom 20. Okt 2008
Antwort Antwort
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#1

[DirectX] Dynamisch X-Meshs rendern

  Alt 11. Okt 2008, 12:01
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:
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);
            }
         }
    }
}
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.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 11. Okt 2008, 16:10
Mal Ne dumme Frage, wo wird es denn hineingeladen ? Welche Variable ?

Code:
LoadMesh("MeinMesh.x"); // <---<<
Meiner bescheidene Ansicht nach fehlt 'ne Variable.


Code:
myMesh = LoadMesh("MeinMesh.x"); // <---<<
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 11. Okt 2008, 16:13
Er hat doch das Feld m_Mesh deklariert. Diese speichert das (?) Mesh.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 11. Okt 2008, 16:35
Huch, habe ich wohl übersehen:

Code:
public void LoadMesh(string file)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 13. Okt 2008, 18:10
Dezent *push*

Ich habs immer noch nicht hinbekommen, dass das Mesh gerendert wird.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 15. Okt 2008, 17:57
*hochpush*
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 16. Okt 2008, 19:00
*push*
http://www.ben-newman.de/smilie/signs/209174.gif
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 18. Okt 2008, 11:03
*push*
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 19. Okt 2008, 11:17
Ich hab leider immernoch keine Lösung gefunden...
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: [DirectX] Dynamisch X-Meshs rendern

  Alt 20. Okt 2008, 17:35
Mein 6. Post in Folge
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz