tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
493
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von broetchen
    broetchen broetchen ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Österreich/Wien
    Beiträge
    181
    hi!

    Ich arbeite mich gerade in MDX ein und wollte mittels IndexBuffer nen Würfel erstellen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    
    public class Form2 : System.Windows.Forms.Form
    {
      private Device device;
      private VertexBuffer vBuffer;
      private IndexBuffer iBuffer;
      CustomVertex.PositionOnly[] verts;
      int[] indices;
     
      public Form2()
      {
        InitializeComponent();
     
        PresentParameters presentParams = new PresentParameters();
        presentParams.SwapEffect = SwapEffect.Discard;
        presentParams.Windowed = true;
     
        device = new Device(0,DeviceType.Hardware, this.Handle, CreateFlags.SoftwareVertexProcessing, presentParams);
     
        CreateCube();
      }
     
      private void CreateCube()
      {
        vBuffer = new VertexBuffer(typeof(CustomVertex.PositionOnly), 8, device, Usage.Dynamic, CustomVertex.PositionOnly.Format, Pool.Default);
        iBuffer = new IndexBuffer(typeof(int), 36, device, Usage.Dynamic, Pool.Default);
     
        //creating vertices
        verts = new CustomVertex.PositionOnly[8];
        //vorne
        verts[0] = new CustomVertex.PositionOnly(25,25,25);
        verts[1] = new CustomVertex.PositionOnly(75,25,25);
        verts[2] = new CustomVertex.PositionOnly(75,75,25);
        verts[3] = new CustomVertex.PositionOnly(25,75,25);
        //hinten
        verts[4] = new CustomVertex.PositionOnly(25,25,75);
        verts[5] = new CustomVertex.PositionOnly(75,25,75);
        verts[6] = new CustomVertex.PositionOnly(75,75,75);
        verts[7] = new CustomVertex.PositionOnly(25,75,75);
        //setting data
        vBuffer.SetData(verts,0,LockFlags.None);
     
        //setting indices
        indices = new int[36]
        { 
        //vorne
        0,1,3,
        1,2,3,
        //rechts
        1,5,2,
        5,6,2,
        //hinten
        5,4,6,
        4,7,6,
        //links
        4,6,7,
        6,3,7,
        //oben
        4,5,0,
        5,1,0,
        //unten
        3,2,7,
        2,6,7
        };
        iBuffer.SetData(indices,0,LockFlags.None);
     
       device.Indices = iBuffer;
      }
     
      public void Render()
      {
        device.Clear(ClearFlags.Target, Color.White, 1.0f, 0);
        device.BeginScene();
        SetupCamera();
        device.SetStreamSource(0,vBuffer,0);
        device.VertexFormat = CustomVertex.PositionOnly.Format;
        device.DrawIndexedPrimitives(PrimitiveType.LineList, 0, 0, verts.Length, 0, indices.Length/3);
     
        device.EndScene();
        device.Present();
      }
     
      private void SetupCamera()
      {
        device.Transform.View = Matrix.LookAtLH(new Vector3(), new Vector3(100,100,100), new Vector3(0,1,0));
     
        device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI/2, (float)Width/Height, 1.0f, 150.0f);
     
        device.RenderState.ZBufferEnable = false;
        device.RenderState.CullMode = Cull.None;
      }
    }
    Ich hab die Standard-Form-Funktionen hier mal weggelassen.

    Das Problem bei der ganzen Sache ist, dass das Ergebnis etwas komisch aussieht (ich häng mal nen screenshot an).

    Ich find den Fehler einfach net. Kann mir jemand bitte helfen?!

    mfg broetchen
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Managed DirectX - komischer Würfel-weirdcube.jpg  
     

Ähnliche Themen

  1. managed DirectX: x-File mit Animation
    Von ma-pi im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 10.06.08, 13:28
  2. .Net managed etc..
    Von chmee im Forum .NET Café
    Antworten: 0
    Letzter Beitrag: 10.01.06, 17:51
  3. [DirectX // Win 32] DirectX im Fenster?
    Von Nizomi im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 31.08.05, 23:26
  4. Managed DirectX - Kamera richtig positionieren
    Von broetchen im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 16.06.05, 15:36
  5. Antworten: 0
    Letzter Beitrag: 28.03.05, 18:50