Das bekannte Programm zur optimalen Vorbereitung auf die theoretische Führerscheinprüfung
DirectX-Forum - Beitragsübersicht -
Von VBJens
E-Mail fat.tony81@online.de
Datum 13. Januar 2010 um 20:43:22
Frage Liebe VBler,

ich bin blutiger Anfänger, was DirectX angeht. Habe mir aus diesem Grund ein Buch gekauft und folgendes Beispiel abgetippt:

Code im Modul:
Module Module1
Public Structure D3DPRESENT_PARAMETERS
Public AutoDepthSteniclFormat As DepthFormat
Public BackBufferCount As Integer
Public BackBufferFormat As Format
Public BackBufferHeight As Integer
Public BackBufferWidth As Integer
Public DeviceWindow As Control
Public DeviceWindowHandle As IntPtr
Public EnableAutoDepthStencil As Boolean
Public FullScreenRefreshRateInHz As Integer
Public MultiSample As MultiSampleType
Public MultiSampleQuality As Integer
Public PresentationInterval As PresentInterval
Public PresentFlag As PresentFlag
Public SwapEffect As SwapEffect
Public Windowed As Boolean
End Structure

Public Direct3DDevice As Microsoft.DirectX.Direct3D.Device
Public vbBuffer_Dreieck As Direct3D.VertexBuffer = Nothing

Public Sub OnCreateVertexBuffer(ByVal sender As Object, ByVal e As EventArgs)
Dim vb As Direct3D.VertexBuffer = CType(sender, Direct3D.VertexBuffer)
Dim verts As Direct3D.CustomVertex.TransformedColored() = CType(vb.Lock(0, 0), _
Direct3D.CustomVertex.TransformedColored())
verts(0).X = 150
verts(0).X = 50
verts(0).Z = 0.5F
verts(0).Rhw = 1
verts(0).Color = System.Drawing.Color.Aqua.ToArgb()
verts(1).X = 250
verts(1).Y = 250
verts(1).Z = 0.5F
verts(1).Rhw = 1
verts(1).Color = System.Drawing.Color.Brown.ToArgb()
verts(2).X = 50
verts(2).Y = 250
verts(2).Z = 0.5F
verts(2).Rhw = 1
verts(2).Color = System.Drawing.Color.LightPink.ToArgb()
vb.Unlock()
End Sub

Public Sub OnCreateDevice(ByVal sender As Object, ByVal e As EventArgs)
Dim dev As Direct3D.Device = CType(sender, Direct3D.Device)
vbBuffer_Dreieck = New Direct3D.VertexBuffer(GetType(Direct3D.CustomVertex.TransformedColored) _
, 3, dev, 0, VertexFormats.Transformed, Pool.Default)
AddHandler vbBuffer_Dreieck.Created, AddressOf OnCreateVertexBuffer
OnCreateVertexBuffer(vbBuffer_Dreieck, Nothing)
End Sub

Public Function CreateDirect3DDevice(ByVal Handle As Form) As Boolean
Try
Dim presentParams As New Direct3D.PresentParameters()
presentParams.Windowed = True
presentParams.SwapEffect = SwapEffect.Discard
Direct3DDevice = New Direct3D.Device(0, DeviceType.Hardware, Handle, _
CreateFlags.HardwareVertexProcessing, presentParams)
Return True
Catch ex As DirectXException
Return False
End Try
End Function
Code in der UserForm:
Public Class Form1
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

CreateDirect3DDevice(Me)
Direct3DDevice.Clear(Direct3D.ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
Direct3DDevice.BeginScene()
Direct3DDevice.SetStreamSource(0, vbBuffer_Dreieck, 0)
Direct3DDevice.VertexFormat = Direct3D.CustomVertex.TransformedColored.Format
Direct3DDevice.DrawPrimitives(Direct3D.PrimitiveType.TriangleList, 0, 1)
Direct3DDevice.EndScene()
Direct3DDevice.Present()
End Sub
Es soll einfach ein Dreieck auf blauem Hintergrund gezeichnet werden. Wenn ich die Zeile
Direct3DDevice.DrawPrimitives(Direct3D.PrimitiveType.TriangleList, 0, 1)
auskommentiere, funktioniert der Code. Die Userform wird blau.

Mit der Zeile kommt folgende Fehlermeldung:
InvalidCallException wurde nicht behandelt
Fehler in der Anwendung


Kann mir jemand helfen?
Vielen Dank im Voraus.

Lieben Gruß,
Jan
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ]
Antworten
D10: Sicher einfach für euch - VBJens 13. Januar 2010 um 20:43:22
Re: Sicher einfach für euch - Nico 14. Januar 2010 um 08:38:27

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  DirectX 10
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum DirectX-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015