Aplikace v DirectX nefunguje   otázka

VB.NET

Dobrý den,

Nainstaloval jsem DirectX_SDK podle návodu v tutoriále na této stránce. Přidal jsem obě knihovny: Microsoft.DirectX a Microsoft.DirectX.DirectDraw. Po napsání kódu v prvním díle se mi zobrazil formulář, ale barvy nejsou nikde. Předem díky za odpověď.

Zde je kód:

Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectDraw
Public Class Form1
    Dim dev As Device   'objekt, který reprezentuje zařízení (grafickou kartu resp. výstup na monitor). 
    Dim backBuffer As Surface, BackBufferDesc As SurfaceDescription     'objekt, který popisuje jeho vlastnosti a použití.
    Dim frontBuffer As Surface, FrontBufferDesc As SurfaceDescription   'objekt, který popisuje jeho vlastnosti a použití.
    Dim clip As Clipper 'slouží k vymezení oblasti renderování na formulář

    Public Sub createDevice()
        'vytvořit a nastavit zařízení
        dev = New Device()
        dev.SetCooperativeLevel(Me, CooperativeLevelFlags.FullscreenExclusive)
    End Sub

    Public Sub createBuffers()
        'kontrola jestli je okno v popředí
        If Not Me.Focused Then Exit Sub
        'nastavit zařízení
        dev.SetCooperativeLevel(Me, CooperativeLevelFlags.FullscreenExclusive)
        'vytvořit frontBuffer
        If frontBuffer IsNot Nothing Then
            frontBuffer.Restore()
        Else
            FrontBufferDesc = New SurfaceDescription()
            FrontBufferDesc.SurfaceCaps.PrimarySurface = True
            FrontBufferDesc.SurfaceCaps.Flip = True
            FrontBufferDesc.SurfaceCaps.Complex = True
            FrontBufferDesc.BackBufferCount = 1
            frontBuffer = New Surface(FrontBufferDesc, dev)
        End If
        'vytvořit backBuffer
        If backBuffer IsNot Nothing Then
            backBuffer.Restore()
        Else
            BackBufferDesc = New SurfaceDescription()
            BackBufferDesc.SurfaceCaps.BackBuffer = True
            backBuffer = frontBuffer.GetAttachedSurface(BackBufferDesc.SurfaceCaps)
        End If
        'nastavit oříznutí
        clip = New Clipper(dev)
        clip.Window = Me
        frontBuffer.Clipper = clip
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
        'kontrola 
        If Not Me.Created Then Exit Sub
        If frontBuffer Is Nothing Or backBuffer Is Nothing Then Exit Sub
        If Not Me.Focused Then Exit Sub
        Try
            'vykresli scénu na BackBuffer
            backBuffer.ColorFill(Color.DarkSlateBlue)
            'nastavit výplň na 1 (jednolitá) a barvu výplně na zelenou
            backBuffer.FillStyle = 1
            backBuffer.FillColor = Color.Green
            'vykreslíme čtverec
            backBuffer.DrawBox(200, 300, 500, 500)
            'převrátit buffery
            frontBuffer.Flip(backBuffer, FlipFlags.Wait)
        Catch ex As Exception
            'po obnovení z minimalizace
            If ex.GetType Is GetType(SurfaceLostException) Then
                createBuffers()
            End If
        End Try
    End Sub

    Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        'ukončení programu
        If e.KeyCode = Keys.Escape Then
            Timer1.Enabled = False
            End
        End If
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'vytvořit a nastavit zařízení
        createDevice()
        'vytvořit Buffer
        createBuffers()
        'spustit časovač
        Timer1.Enabled = True
    End Sub
End Class

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback