JavascriptProva

domenica 3 novembre 2013

Appunti informali su DirectX

Customvertex. Che è 'sta roba?

Contenitore di strutture.

Forse sarebbe il caso di creare delle strutture e vedere come una classe possa essere un contenitore di strutture.
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim mia As Raccolta.Tipo
        mia = New Raccolta.Tipo
        mia.proprieta = "uno"
        mia.proprieta2 = "due"

        Dim mietta As Raccolta.Tipetto
        mietta = New Raccolta.Tipetto
        mietta.proprieta = "unetto"
        mietta.proprieta2 = "duetto"
    End Sub


End Class


Class Raccolta
    Public Structure Tipo
        Public proprieta As String
        Public proprieta2 As String
    End Structure

    Public Structure Tipetto
        Public proprieta As String
        Public proprieta2 As String
    End Structure
End Class
Ecco, qualcosa del genere.
Che macello!
Cerchiamo di analizzare la cosa per venirne a capo... Sto in crisi!!!

        Dim present As PresentParameters = New PresentParameters
        present.Windowed = True 'we?ll draw on a window
        present.SwapEffect = SwapEffect.Discard 'discuss later
        device = New Direct3D.Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, present)
Che cosa è PresentParameters?
Facciamo una ricerca.

Serve per inizializzare il device.
Come?
Ha un membro Windowed e uno SwapEffect: che significano?
Windowed è facile da capire: è booleano, e se è True significa che l'applicazione si esegue in una finestra.
SwapEffect è più complicato... Qui è settato a Discard.
Che accidenti significa?
Ah, ecco, può essere settato a questi valori:
  1. Discard
  2. Copy
  3. Flip
Ora il casino è vedere che significano questi valori.

Ha a che fare con il metodo Device.Present()
Che metodo è? E' presente qui?
Sì, è presente. Quindi PresentParameters ha a che fare con questo metodo Device.Present
Che fa il metodo Present di Device?
Eccolo copiato direttamente dalla guida di MSDN:
"Presents the display with the contents of the next buffer in the sequence of back buffers owned by the device."

Presenta il display con il contenuto del successivo buffer nella sequenza dei back buffers posseduti dal device.
Bene. Dovrei cercare di capire che significa swap chain
A swap chain is a collection of buffers that are used for displaying frames to the user. Each time an application presents a new frame for display, the first buffer in the swap chain takes the place of the displayed buffer. This process is called swapping or flipping. Quindi una swap chain è una collezione di buffers che sono usati per mostrare i frames all'utente.
Sarebbe la coda di buffers che "fanno la fila" dietro lo schermo per essere presentati.
Questo processo si chiama swapping o flipping.
Collegamento a MSDN.

Bene.
La frequenza di refresh dello schermo va da 60 a 100 Hz.
Se lo swapping ha una frequenza superiore alla frequenza di refresh dello schermo, dato che il disegno dello schermo va dall'alto a sinistra fino al basso a destra, se mentre l'immagine è in fase di disegno si ha lo swapping al buffer successivo, la parte superiore dello schermo contiene l'immagine vecchia mentre quella inferiore contiene l'immagine nuova. Questo effetto si chiama tearing.

Nessun commento:

Posta un commento