Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Visual basic&directx


Rekomendowane odpowiedzi

Opublikowano

Tekst to tak naprawdę tłumaczenie pliku help dołączonego do bibliotek sdk jednak zastrzegam sobie prawo do kopiowania przetłumaczonej wersji

guide daje po kolei

1.rozdział-Tworzenie urządzeń

1.1.tworzenie formy

Microsoft ? Visual Basic ? formie służy jako okno aplikacji. Ustaw właściwości formularza w następujący sposób:

BorderStyle     =   2 - Sizeable
Caption         =   "Create Device"
Height          =   3600

Left            =   0
Top             =   0
Width           =   4800
LinkTopic       =   "Form1"
MaxButton       =   True
MinButton       =   True
ScaleHeight     =   3195
ScaleMode       =   1 - Twip
ScaleWidth      =   254
StartUpPosition =   3 - Windows Default

żeby wyświetlić okno aplikacji w Form_Load wpisz to

Me.Show

 

1.2 inicjowanie obiektu

robimy funkcje hmmm nazwijmy ją InitD3D

wpisujemy

Function InitD3D(hWnd As Long) As Boolean

dlaczego hWnd?

zobaczycie w dalszej części

 

w funkcji wpisujemy

 Set g_D3D = g_DX.Direct3DCreate()
    If g_D3D Is Nothing Then Exit Function
    

    Dim mode As D3DDISPLAYMODE
    g_D3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, mode
    

    Dim d3dpp As D3DPRESENT_PARAMETERS
    d3dpp.Windowed = 1
    d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC
    d3dpp.BackBufferFormat = mode.Format
    
  
    
    Set g_D3DDevice = g_D3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, _
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp)
    If g_D3DDevice Is Nothing Then Exit Function
    

    
    InitD3D = True'sorrka ze bez wytłumaczenia ale spieszy mi sie

 

1.3 wyświetlenie sceny

piszemy:

Sub Render()

    If g_D3DDevice Is Nothing Then Exit Sub
    g_D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFF&, 1#, 0
    g_D3DDevice.BeginScene
    g_D3DDevice.EndScene
    g_D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
    
End Sub

w form unload dajemy

end

a w timera

Render

w form load dodajemy

DoEvents
    
    ' Initialize D3D and D3DDevice
    b = InitD3D(form1.hWnd)
    If Not b Then
        MsgBox "Unable to CreateDevice (see InitD3D() source for comments)"
        End
    End If
    
    ' Enable Timer to update
    Timer1.Enabled = True

a w modul

Public g_DX As New DirectX8
Public g_D3D As Direct3D8
Public g_D3DDevice As Direct3DDevice8

kodzik:

Tut01_CreateDevice.rar

2.rozdział-Tworzenie wierzchołków

2.1----

pod

Public g_DX As New DirectX8
Public g_D3D As Direct3D8
Public g_D3DDevice As Direct3DDevice8

wpisujemy:

Public Type CUSTOMVERTEX
    x As Single         'oś X
    y As Single         'oś y
    z  As Single        'oś z-jak wiemy w świecie 2d są 2 osie ale w 3d 3 z to jakby skok prowadzi w góre
    rhw As Single       'normalized z rhw
    color As Long       'kolory wierzchołków
End Type
Public Const D3DFVF_CUSTOMVERTEX = (D3DFVF_XYZRHW Or D3DFVF_DIFFUSE)

2.2.funkcja rysująca trójkąt

robimy funkcje InitVB

  
    Dim Vertices(2) As CUSTOMVERTEX
    Dim VertexSizeInBytes As Long
    
    VertexSizeInBytes = Len(Vertices(0))
    
    With Vertices(0): .x = 150: .y = 50: .z = 0.5: .rhw = 1: .color = &HFFFF0000: End With '
    With Vertices(1): .x = 250: .y = 250: .z = 0.5: .rhw = 1: .color = &HFF00FF00: End With '
    With Vertices(2): .x = 50: .y = 250: .z = 0.5: .rhw = 1: .color = &HFF00FFFF: End With 'tu można zmienić parametry trójkąta 
Set g_VB = g_D3DDevice.CreateVertexBuffer(VertexSizeInBytes * 3, _
                     0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT)
    If g_VB Is Nothing Then Exit Function

    D3DVertexBuffer8SetData g_VB, 0, VertexSizeInBytes * 3, 0, Vertices(0)

    InitVB = True

2.3 Render

Sub Render()

    Dim v As CUSTOMVERTEX
    Dim sizeOfVertex As Long
    
    
    If g_D3DDevice Is Nothing Then Exit Sub


    g_D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFF&, 1#, 0
    
     

    g_D3DDevice.BeginScene

    sizeOfVertex = Len(v)
    g_D3DDevice.SetStreamSource 0, g_VB, sizeOfVertex
    g_D3DDevice.SetVertexShader D3DFVF_CUSTOMVERTEX
    g_D3DDevice.DrawPrimitive D3DPT_TRIANGLELIST, 0, 1

    g_D3DDevice.EndScene
  
    g_D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
    
End Sub

source Tut02_Vertices.rar

  • 1 rok później...
Opublikowano

mógłbyś wytłumaczyc to troszke bardzej.... ale plusik jest ;D bo mi sie udało ! :rolleyes:

  • 2 miesiące temu...
Opublikowano

heh skąd skopiowałeś?

Plus

aaaa

I minus

Plus i minus to jedyne

Plus i minus to jedyne co widzę

Plus i minus to jedyne co słyszę

Plus i minus to jedyne czym żyjeWolę być -- Więc daj mi minus

Życie, życie nasze składa się z krótkich momentów

Cudownych chwil czy przykrych incydentów

Niczego nie przegapię, wszystkie je łapię

Korzystam z talentu, przelewam go na papier

Więc łapię chwile ulotne jak ulotka

Ulotne chwile łapię jak fotka

Dbam, by chwile ulotne jak notka

Nie uleciały jak ulotna plotka

W niepamięć... Każdy gest i każde zdanie

Obrazy przed oczami zawieszone jak na ścianie

Piort 'Magik' Łuszcz

Opublikowano

z książki jak kod jest xD w książkach tez sa kody>? xD popraw bo troche wygląda....

Plus

aaaa

I minus

Plus i minus to jedyne

Plus i minus to jedyne co widzę

Plus i minus to jedyne co słyszę

Plus i minus to jedyne czym żyjeWolę być -- Więc daj mi minus

Życie, życie nasze składa się z krótkich momentów

Cudownych chwil czy przykrych incydentów

Niczego nie przegapię, wszystkie je łapię

Korzystam z talentu, przelewam go na papier

Więc łapię chwile ulotne jak ulotka

Ulotne chwile łapię jak fotka

Dbam, by chwile ulotne jak notka

Nie uleciały jak ulotna plotka

W niepamięć... Każdy gest i każde zdanie

Obrazy przed oczami zawieszone jak na ścianie

Piort 'Magik' Łuszcz

  • 1 rok później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...