DirectX rucklig

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    DirectX rucklig

    hi leute ich habe folgendes problemm nemlich ich hbe mir eine redner rutine erstell aber ich schaffe es nicht das bild ordenlich darzu stellen
    hier der code (vervielfältigung untersagt)

    VB.NET-Quellcode

    1. Imports Microsoft.DirectX.Direct3D.D3DX
    2. Imports Microsoft.DirectX.Direct3D
    3. Imports Microsoft.DirectX
    4. Public Class Form1
    5. Dim dir As Directx_help
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. dir = New Directx_help
    8. dir.Load_DirectX()
    9. dir.bild_laden(My.Resources.raum1, 100, 1, False)
    10. dir.bild_laden(My.Resources.Logo, 1, 1, False)
    11. End Sub
    12. End Class
    13. Public Class Directx_help
    14. Dim tm As New System.Windows.Forms.Timer
    15. Dim present As New Direct3D.PresentParameters
    16. Dim Dev3D As Direct3D.Device
    17. Dim b(30) As Bild
    18. Dim bild_zahler As Integer
    19. Dim t(30) As Text
    20. Dim text_zahler As Integer
    21. Public text_bool, bmp_bool As Boolean
    22. Private Sub Init_DirectX()
    23. present = New PresentParameters
    24. present.Windowed = True
    25. present.BackBufferWidth = 602
    26. present.BackBufferHeight = 582
    27. present.SwapEffect = SwapEffect.Discard
    28. present.BackBufferFormat = Direct3D.Format.A8R8G8B8
    29. present.PresentationInterval = Direct3D.PresentInterval.One
    30. present.SwapEffect = Direct3D.SwapEffect.Discard
    31. Dev3D = New Device(0, DeviceType.Hardware, Form1.Handle, CreateFlags.SoftwareVertexProcessing, present)
    32. Dev3D.RenderState.Lighting = False
    33. Dev3D.RenderState.CullMode = Cull.Clockwise & Cull.CounterClockwise
    34. End Sub
    35. Public Sub Load_DirectX()
    36. Init_DirectX()
    37. For i = 1 To 30
    38. b(i) = New Bild
    39. t(i) = New Text
    40. Next
    41. AddHandler tm.Tick, AddressOf DirectX_RenderTimer_Tick
    42. tm.Interval = 100
    43. tm.Start()
    44. End Sub
    45. Private Sub Directx_Render()
    46. Dev3D.Clear(ClearFlags.Target, Color.Black.ToArgb, 0, 1)
    47. Dev3D.BeginScene()
    48. If text_bool = True Then
    49. For i = 1 To text_zahler
    50. text_laden(t(i).text_t, t(i).text_c, t(i).text_x, t(i).text_y, t(i).text_f, t(i).text_g)
    51. Next
    52. End If
    53. If bmp_bool = True Then
    54. For i = 1 To bild_zahler
    55. bild_laden(b(i).bmp_b, b(i).bmp_x, b(i).bmp_y, True)
    56. Next
    57. End If
    58. Dev3D.EndScene()
    59. Dev3D.Present()
    60. End Sub
    61. Public Sub bild_laden(ByVal bmp As Bitmap, ByVal x As Integer, ByVal y As Integer, ByVal a As Boolean)
    62. If a = False Then
    63. bild_zahler += 1
    64. b(bild_zahler).bmp_b = bmp
    65. bmp_bool = True
    66. End If
    67. Dim tSprite As New Sprite(Dev3D)
    68. tSprite.Begin(SpriteFlags.AlphaBlend)
    69. Dim tTexture As New Texture(Dev3D, bmp, Usage.SoftwareProcessing, Pool.Managed)
    70. tSprite.Draw2D(tTexture, New Point(0, 0), 0, New Point(x, y), Color.White)
    71. tSprite.End()
    72. tSprite.Dispose()
    73. tTexture.Dispose()
    74. End Sub
    75. Public Sub text_laden(ByVal text As String, ByVal farbe As Color, ByVal x As Integer, ByVal y As Integer, ByVal Font As String, ByVal grosse As Integer)
    76. text_zahler += 1
    77. t(text_zahler).text_t = text
    78. text_bool = True
    79. Dim Spr As New Direct3D.Sprite(Dev3D)
    80. Dim TestSystemFont As New Drawing.Font(Font, grosse, FontStyle.Regular, GraphicsUnit.Pixel)
    81. Dim TestFont As New Direct3D.Font(Dev3D, TestSystemFont)
    82. TestSystemFont.Dispose()
    83. Spr.Begin(SpriteFlags.AlphaBlend)
    84. Dim TextRect As New Rectangle(x, y, 602, 582)
    85. TestFont.DrawText(Spr, text, TextRect, DrawTextFormat.Left, farbe)
    86. TestFont.Dispose()
    87. Spr.End()
    88. Spr.Dispose()
    89. End Sub
    90. Private Sub DirectX_RenderTimer_Tick()
    91. Dim result As Integer
    92. If Dev3D.CheckCooperativeLevel(result) Then
    93. Try
    94. Directx_Render()
    95. Catch ex As Exception
    96. Dev3D.CheckCooperativeLevel(result)
    97. End Try
    98. End If
    99. Select Case CType(result, ResultCode)
    100. Case ResultCode.DeviceLost
    101. Threading.Thread.Sleep(500)
    102. Case ResultCode.DeviceNotReset
    103. Dev3D.Reset(present)
    104. End Select
    105. End Sub
    106. Public Class Bild
    107. Public bmp_b As Bitmap
    108. Public bmp_x, bmp_y As Integer
    109. End Class
    110. Public Class Text
    111. Public text_t, text_f As String
    112. Public text_x, text_y, text_g As Integer
    113. Public text_c As Color
    114. End Class
    115. End Class

    mfg blacknetworkbit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Wundert mich überhaupt nicht...
    das Sprite deklariert man Global und initialisiert es einmal(oder nach DeviceLost nochmal)....
    ebenso gilt es für Texturen und Fonts...

    Das Sprite wird zum zeichnen aller Texturen+Text verwendet, Begin wird dabei beim Beginn des Rendervorgangs aufgerufen und End am Ende, heißt so viel wie nur einmal in einem Renderdurchlauf...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    wie soll ich es denn sonst machen ich will das bestuimmte bilder sich bewegen :thumbsup:
    mfg blacknetworkbit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Hier mal nen Bsp.:

    VB.NET-Quellcode

    1. Private tex1 As Texture,tex2 As Texture
    2. Private spriteBatch As Sprite
    3. Sub Init()
    4. 'Devices initialisieren usw...
    5. 'Dateien Laden
    6. tex1 = TextureLoader.FromFile(_device,"bla")
    7. tex2 = TextureLoader.FromFile(_device,"bla2")
    8. spriteBatch = new Sprite(_device)
    9. End Sub
    10. Sub Rendern()
    11. _device.Clear(Target Or ZBuffer,Color.Black,0,1)
    12. _device.BeginScene()
    13. spriteBatch.Begin(AlphaBlend)
    14. For i As Integer = 0 To 10
    15. spriteBatch.Draw2D(tex1, New Point(0, 0), 0, New Point(x1*i, y1), Color.White)
    16. Next
    17. spriteBatch.Draw2D(tex2, New Point(0, 0), 0, New Point(x2, y2), Color.White)
    18. spriteBatch.End()
    19. _device.EndScene()
    20. _device.Present()
    21. End Sub

    Wie du siehst verwende ich nur ein Sprite(spriteBatch)...
    die Textur tex1 zeichne ich 11 mal in einer Szene mit nur einer Textur...
    tex1 und tex2 sowie das Sprite werden nach dem initialisieren des Device geladen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    hi danke für die schnelle antwort es geht sehr gut aber ich habe immer einen fehler (ürgend ein element ist nicht mit NEW derkladiert) :rolleyes:
    naja ich werde es schon finden.
    Vielen dank für eure hilfe (besonders jvbsl)
    edit geht doch nicht so flüssig XD
    kann sich jemand nocheinmal den code ankucken ???

    VB.NET-Quellcode

    1. Imports Microsoft.DirectX.Direct3D.D3DX
    2. Imports Microsoft.DirectX.Direct3D
    3. Imports Microsoft.DirectX
    4. Public Class Form1
    5. Dim dir As Directx_help
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. dir = New Directx_help
    8. dir.Load_DirectX()
    9. End Sub
    10. End Class
    11. Public Class Directx_help
    12. Dim tm As New System.Windows.Forms.Timer
    13. Dim present As New Direct3D.PresentParameters
    14. Dim Dev3D As Direct3D.Device
    15. Private tex1, tex2 As Texture
    16. Private spriteBatch As Sprite
    17. Dim b(30) As Bild
    18. Dim bild_zahler As Integer
    19. Dim t(30) As Text
    20. Dim text_zahler As Integer
    21. Public text_bool, bmp_bool As Boolean
    22. Private Sub Init_DirectX()
    23. present = New PresentParameters
    24. present.Windowed = True
    25. present.BackBufferWidth = 602
    26. present.BackBufferHeight = 582
    27. present.SwapEffect = SwapEffect.Discard
    28. present.BackBufferFormat = Direct3D.Format.A8R8G8B8
    29. present.PresentationInterval = Direct3D.PresentInterval.One
    30. present.SwapEffect = Direct3D.SwapEffect.Discard
    31. Dev3D = New Device(0, DeviceType.Hardware, Form1.Handle, CreateFlags.SoftwareVertexProcessing, present)
    32. Dev3D.RenderState.Lighting = False
    33. Dev3D.RenderState.CullMode = Cull.Clockwise & Cull.CounterClockwise
    34. spriteBatch = New Sprite(Dev3D)
    35. tex1 = New Texture(Dev3D, My.Resources.raum1, Usage.SoftwareProcessing, Pool.Managed)
    36. tex2 = New Texture(Dev3D, My.Resources.lol, Usage.SoftwareProcessing, Pool.Managed)
    37. End Sub
    38. Public Sub Load_DirectX()
    39. Init_DirectX()
    40. AddHandler tm.Tick, AddressOf DirectX_RenderTimer_Tick
    41. tm.Interval = 100
    42. tm.Start()
    43. End Sub
    44. Private Sub Directx_Render()
    45. Dev3D.Clear(ClearFlags.Target, Color.Black.ToArgb, 0, 1)
    46. Dev3D.BeginScene()
    47. spriteBatch.Begin(SpriteFlags.AlphaBlend)
    48. spriteBatch.Draw2D(tex1, New Point(0, 0), 0, New Point(100, 100), Color.White)
    49. spriteBatch.Draw2D(tex2, New Point(0, 0), 0, New Point(100, 100), Color.White)
    50. spriteBatch.End()
    51. spriteBatch.Dispose()
    52. tex1.Dispose()
    53. tex2.Dispose()
    54. Dev3D.EndScene()
    55. Dev3D.Present()
    56. End Sub
    57. Public Sub bild_laden(ByVal bmp As Bitmap, ByVal x As Integer, ByVal y As Integer, ByVal a As Boolean)
    58. If a = False Then
    59. bild_zahler += 1
    60. b(bild_zahler).bmp_b = bmp
    61. bmp_bool = True
    62. End If
    63. Dim tSprite As New Sprite(Dev3D)
    64. tSprite.Begin(SpriteFlags.AlphaBlend)
    65. Dim tTexture As New Texture(Dev3D, bmp, Usage.SoftwareProcessing, Pool.Managed)
    66. tSprite.Draw2D(tTexture, New Point(0, 0), 0, New Point(x, y), Color.White)
    67. tSprite.End()
    68. tSprite.Dispose()
    69. tTexture.Dispose()
    70. End Sub
    71. Public Sub text_laden(ByVal text As String, ByVal farbe As Color, ByVal x As Integer, ByVal y As Integer, ByVal Font As String, ByVal grosse As Integer)
    72. text_zahler += 1
    73. t(text_zahler).text_t = text
    74. text_bool = True
    75. Dim Spr As New Direct3D.Sprite(Dev3D)
    76. Dim TestSystemFont As New Drawing.Font(Font, grosse, FontStyle.Regular, GraphicsUnit.Pixel)
    77. Dim TestFont As New Direct3D.Font(Dev3D, TestSystemFont)
    78. TestSystemFont.Dispose()
    79. Spr.Begin(SpriteFlags.AlphaBlend)
    80. Dim TextRect As New Rectangle(x, y, 602, 582)
    81. TestFont.DrawText(Spr, text, TextRect, DrawTextFormat.Left, farbe)
    82. TestFont.Dispose()
    83. Spr.End()
    84. Spr.Dispose()
    85. End Sub
    86. Private Sub DirectX_RenderTimer_Tick()
    87. Dim result As Integer
    88. If Dev3D.CheckCooperativeLevel(result) Then
    89. Try
    90. Directx_Render()
    91. Catch ex As Exception
    92. Dev3D.CheckCooperativeLevel(result)
    93. End Try
    94. End If
    95. Select Case CType(result, ResultCode)
    96. Case ResultCode.DeviceLost
    97. Threading.Thread.Sleep(500)
    98. Case ResultCode.DeviceNotReset
    99. Dev3D.Reset(present)
    100. End Select
    101. End Sub
    102. Public Class Bild
    103. Public bmp_b As Bitmap
    104. Public bmp_x, bmp_y As Integer
    105. End Class
    106. Public Class Text
    107. Public text_t, text_f As String
    108. Public text_x, text_y, text_g As Integer
    109. Public text_c As Color
    110. End Class
    111. 'If text_bool = True Then
    112. 'For i = 1 To text_zahler
    113. 'text_laden(t(i).text_t, t(i).text_c, t(i).text_x, t(i).text_y, t(i).text_f, t(i).text_g)
    114. 'Next
    115. 'End If
    116. 'If bmp_bool = True Then
    117. 'For i = 1 To bild_zahler
    118. 'bild_laden(b(i).bmp_b, b(i).bmp_x, b(i).bmp_y, True)
    119. 'Next
    120. 'End If
    121. End Class

    mfg blacknetworkbit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    spriteBatch.Dispose()
    tex1.Dispose()
    tex2.Dispose()

    Das hier hat da gar nichts verloren...

    Dev3D.Reset(present)

    Da musst du anschließend nochmal die Texturen und das Sprite Initialisieren/Laden...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Danke Danke Danke jvbsl
    du hast mir sehr geholfen XD danke danke danke
    aber jetzt spuckt er immer wieder den fehler aus das ürgendein ein element nicht mit NEW dekladiert ist *schmoll*
    fehler :
    System.NullReferenceException wurde nicht behandelt.
    Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Source=Microsoft.DirectX.Direct3DX
    StackTrace:
    bei Microsoft.DirectX.Direct3D.Sprite.OnLostDevice()
    bei Microsoft.DirectX.Direct3D.Sprite.OnParentLost(Object sender, EventArgs e)
    bei Microsoft.DirectX.Direct3D.Device.raise_DeviceLost(Object i1, EventArgs i2)
    bei Microsoft.DirectX.Direct3D.Device.Finalize()
    InnerException:

    mfg blacknetworkbit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BlackNetworkBit“ ()

    Dev3D.RenderState.CullMode = Cull.Clockwise & Cull.CounterClockwise

    & -> Or
    aber nur so Nebenbei^^

    Könntest du den Code im letzten Post bitte noch so Editieren, dass es ist, wie du es jetzt hast(und am besten die Methoden, die du nicht mehr verwendest löschen - in deinem Code kannst du die ja noch beibehalten - nur der Übersicht wegen)...

    Edit: Achja weißt du auch vielleicht die Position, wo der Fehler kommt, kann sein, dass du dafür irgendwo mal nen Try wegmachen musst(nur um zu testen...)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    nee ürgend wie geht das nicht es kommt immer noch der fehler obwolhl ich versucht
    habe den punkt mit try catch blöcken ausfindig zu machen *schmoll*
    fehler :
    System.NullReferenceException wurde nicht behandelt.
    Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Source=Microsoft.DirectX.Direct3DX
    StackTrace:
    bei Microsoft.DirectX.Direct3D.Sprite.OnLostDevice()
    bei Microsoft.DirectX.Direct3D.Sprite.OnParentLost(Object sender, EventArgs e)
    bei System.EventHandler.Invoke(Object sender, EventArgs e)
    bei Microsoft.DirectX.Direct3D.Device.raise_DeviceLost(Object i1, EventArgs i2)
    bei Microsoft.DirectX.Direct3D.Device.Finalize()
    InnerException:

    mein code :

    VB.NET-Quellcode

    1. Public Class Directx_help
    2. Dim tm As New System.Windows.Forms.Timer
    3. Dim present As New Direct3D.PresentParameters
    4. Dim Dev3D As Direct3D.Device
    5. Private tex1, tex2 As Texture
    6. Private spriteBatch As Sprite
    7. Dim b(30) As Bild
    8. Dim bild_zahler As Integer
    9. Dim t(30) As Text
    10. Dim text_zahler As Integer
    11. Public text_bool, bmp_bool As Boolean
    12. Private Sub Init_DirectX()
    13. Try
    14. present = New PresentParameters
    15. present.Windowed = True
    16. present.BackBufferWidth = 602
    17. present.BackBufferHeight = 582
    18. present.SwapEffect = SwapEffect.Discard
    19. present.BackBufferFormat = Direct3D.Format.A8R8G8B8
    20. present.PresentationInterval = Direct3D.PresentInterval.One
    21. present.SwapEffect = Direct3D.SwapEffect.Discard
    22. Dev3D = New Device(0, DeviceType.Hardware, Form1.Handle, CreateFlags.SoftwareVertexProcessing, present)
    23. Dev3D.RenderState.Lighting = False
    24. Dev3D.RenderState.CullMode = Cull.Clockwise Or Cull.CounterClockwise
    25. spriteBatch = New Sprite(Dev3D)
    26. tex1 = New Texture(Dev3D, My.Resources.raum1, Usage.SoftwareProcessing, Pool.Managed)
    27. tex2 = New Texture(Dev3D, My.Resources.lol, Usage.SoftwareProcessing, Pool.Managed)
    28. Catch ex As Exception
    29. MsgBox("fehler laden")
    30. End Try
    31. End Sub
    32. Public Sub Load_DirectX()
    33. Init_DirectX()
    34. AddHandler tm.Tick, AddressOf DirectX_RenderTimer_Tick
    35. tm.Interval = 100
    36. tm.Start()
    37. End Sub
    38. Private Sub Directx_Render()
    39. Try
    40. Dev3D.Clear(ClearFlags.Target, Color.Black.ToArgb, 0, 1)
    41. Dev3D.BeginScene()
    42. spriteBatch.Begin(SpriteFlags.AlphaBlend)
    43. spriteBatch.Draw2D(tex1, New Point(0, 0), 0, New Point(100, 100), Color.White)
    44. spriteBatch.Draw2D(tex2, New Point(0, 0), 0, New Point(100, 100), Color.White)
    45. spriteBatch.End()
    46. Dev3D.EndScene()
    47. Dev3D.Present()
    48. Dev3D.Reset(present)
    49. Init_DirectX()
    50. Catch ex As Exception
    51. MsgBox("fehler rednern")
    52. End Try
    53. End Sub
    54. Private Sub DirectX_RenderTimer_Tick()
    55. Dim result As Integer
    56. If Dev3D.CheckCooperativeLevel(result) Then
    57. Try
    58. Directx_Render()
    59. Catch ex As Exception
    60. Dev3D.CheckCooperativeLevel(result)
    61. End Try
    62. End If
    63. Select Case CType(result, ResultCode)
    64. Case ResultCode.DeviceLost
    65. Threading.Thread.Sleep(500)
    66. Case ResultCode.DeviceNotReset
    67. Dev3D.Reset(present)
    68. End Select
    69. End Sub
    70. end class
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Dev3D.Reset(present)
    Init_DirectX()

    Ein Device Reset bei jedem Rendervorgang?!


    Case ResultCode.DeviceNotReset
    Dev3D.Reset(present)

    Da muss das hin, aber nicht Init_DirectX, da da ein komplett neues Device erstellt wird-> Dauert länger
    Wie das am besten geht?! Nimm das DeviceReset Event deines Device, ich bin mir nur leider nicht mehr sicher, was da alles rein muss, also Lichter und die Matrizen müssen rein, das weiß ich, wie es bei Texturen aussieht bin ich mir nicht sicher, da die vlt. automatisch verwaltet werden, müsstest du mal probieren...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    hmm ich habe es jetzt so gemacht wie du gesagt hast
    alle eigenschaften von Den Divese neu defieniert aber es geht nicht es kommt immer wen ich die form schließe
    das ich ürgendein element nicht defieniert habe *schmoll*
    wass mache ich falsch ??
    mfg blacknetworkbit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BlackNetworkBit“ ()

    Achso, wenn du die Form schließt, na das ist eindeutig...
    Beim schließen der Form musst du als erstes den Timer stoppen und erst wenn kein Rendervorgang mehr läuft das Device schließen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    kein Problem, finde DirectX ein sehr interessantes Thema und mag deshalb fragen dazu...xD

    Achja wäre möglich, dass es immernoch etwas rucklig aussieht:
    Das Timer Interval von 100 entspricht(die dauer des Renderns nicht beachtet) einer Frame Anzahl von 10 pro Sekunde(also 10 FPS)...
    besser wäre 40 was 25 FPS entsprechen würde, aber hier würde doch auch gut eine While-Schleife gehen, dann hohlst du immer die höchstmögliche FPS-Anzahl raus ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    BlackNetworkBit schrieb:

    [...]
    (vervielfältigung untersagt)

    VB.NET-Quellcode

    1. [...]
    2. Dim tSprite As New Sprite(Dev3D)
    3. tSprite.Begin(SpriteFlags.AlphaBlend)
    4. Dim tTexture As New Texture(Dev3D, bmp, Usage.SoftwareProcessing, Pool.Managed)
    5. tSprite.Draw2D(tTexture, New Point(0, 0), 0, New Point(x, y), Color.White)
    6. tSprite.End()
    7. tSprite.Dispose()
    8. tTexture.Dispose()
    9. [...]

    [...]

    Ok, ver****** bitte jemand anderen. Vervielfältigung untersagt? Das heißt für mich soviel wie "Ich erhebe Anspruch auf mein Recht des Geistigen Eigentums"... Finde es nur cool, dass die oben gezeigten Code-Zeilen verdächtig nach den meinen aussehen... Siehe [VB 2010] DirectX/Direct3D - Bild(er) darstellen

    Also bitte, verkauf zumindest mich bitte nicht für dämlich ;)

    MfG,
    X-Zat / Momo
    xD also bitte, das sieht bei so ziemlich jedem gleich aus, also wenn dann, dann kann ich das Recht darauf erheben, ich habs höchstwahrscheinlich vor euch gemacht :P Achne da gabs ja noch Leute vor mir omg...xD

    Edit: Natürlich ohne das Dispose, wie als Antwort auf den Beitrag schon:

    jvbsl schrieb:

    Das Sprite erstellst du direkt zu Beginn nachdem erstellen der Device, dort lädst du auch die Textur, diese sind nun Globale oder Private Variablen, auf welche du in der Render-Routine zugreifst(aber nicht disposen)
    ^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---