Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
1

Ищу примеры работы с 2D в DirectX

20.10.2018, 17:05. Показов 2458. Ответов 27

Author24 — интернет-сервис помощи студентам
Хочу использовать DirectX в своем приложении для вывода графики, но столкнулся с проблемой отсутствия документации на многие вопросы по directx. На сайте майкрософт многие примеры идут на с# или того хуже на с++.
если к с# еще есть переводчики в VB.NET, то к с++ не нашел ниодного.
В частности даже не могу загрузить текстуру из Bitmap
Есть например FromBitmap но не знаю как ее реализовать(((

Буду рад любым примерам - особенно использования 2D графики в DirectX.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2018, 17:05
Ответы с готовыми решениями:

Ищу примеры zoom
Подскажите как сделать увеличение колесикам и перемещение изображения путем зажатия левой кнопки

Ищу примеры по стеганографии
Доброго времени суток! У меня недавно возникла идея записи текста в изображение, и сделать это так...

Ищу книгу для DirectX
Уважаемые пользователи, дайте пожалуйста ссылку на книгу DirectX для C++ пусть даже она большая...

Ищу DirectX setup-файл(ы)
А вот существует ли в природе полноценный установочный файл для установки DirectX? Если да то где...

27
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
17.11.2018, 18:50  [ТС] 21
Author24 — интернет-сервис помощи студентам
Orlangur1991, Безусловно! только С# для меня как китайские иероглифы, а переводчики кода сдаются там где начинается DirectX к сожалению. Если бы я мог беспрепятственно найти инфу в инете, я бы не создавал эту тему поверьте.
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
17.11.2018, 18:53 22
bbbw, сам пользуюсь переводчиком instant vb, в большинстве случаев он пепеваривает все, попробуйте
1
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
17.11.2018, 18:58  [ТС] 23
XIST, Я вам приведу простой пример. Вот вам нужно просто создать окно с DirectX,
и сделать так, чтобы оно могло переключаться в полноэкранный режим и обратно.
Сделать это на VB NET естественно.
Как сами думаете сколько времени у вас на это уйдет с нуля?
Можете погуглить готовый подобный код - желаю успеха!
Я уже знаю что вы сможете там найти поверьте.
Именно поэтому я и создал данную тему - для того, что если кто то еще захочет написать на VB NET с применением DirectX
Ему не придется тратить неделю на поиски информации.
Спасибо за понимание.
1
1496 / 1044 / 146
Регистрация: 01.10.2009
Сообщений: 3,510
Записей в блоге: 1
17.11.2018, 19:00 24
bbbw, я понял что вы меня не поняли, но закончим
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
17.11.2018, 19:00  [ТС] 25
Orlangur1991, Спасибо! попробую обязательно.
0
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
17.11.2018, 20:01 26
bbbw, м.б. будет полезно (так или иначе здесь пересекаются DirectX и VB.Net):
https://www.codeproject.com/Ar... -Basic-NET
https://www.codeproject.com/Ar... ith-VB-NET
https://www.codeproject.com/Ar... deo-player
https://www.codeproject.com/Ar... ET-Example
https://www.codeproject.com/Ar... ged-Direct
https://www.codeproject.com/Ar... ormation-F
https://www.codeproject.com/Ar... Play-Class
1
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
17.11.2018, 20:32  [ТС] 27
Спасибо! ovva
0
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
18.11.2018, 20:22  [ТС] 28
Заготовка для VB NET DirectX
Полноценный полноэкранный режим и переключение между режимам Window и FullScreen
Проект для VS 2015 прилагается
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
'Установите DirectX SDK если еще не сделали этого
'В свойствах проекта подключаем ссылки на:
'Microsoft.DirectX  
'Microsoft.DirectX.Direct3D  
'Microsoft.DirectX.Direct3DX  
'Добавьте ссылку на сборку Microsoft.VisualC
'Устанавливаем активную платформу х86
'NET Fraimework 3,5
'В параметрах исклюений снимите галочку с LoaderLock
'----------------------------------------------------------------------
'Подключаем библиотеки DirectX
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class Form1
    'Графика DirectX:
    Dim WithEvents d3dev As Direct3D.Device 'Видео устройство. Объявить так для получения доступа к событиям устройства
    Dim d3dpp As New PresentParameters 'Параметры видеоустройства
    Dim bbwihe As Point = New Point(800, 600) 'Размеры  BackBuffer 
    Dim sprit As Sprite 'Спрайт 
    Dim textur1 As Texture 'Текстура 
    Dim d3dfont1 As Font 'Шрифт 
    Dim bkgcolor As Color = Color.Black ' Цвет очистки BackBuffer
    Dim DeviceLost As EventHandler
    '--------------------------------------------------------------------
    'Переменные программы
    Dim Start_1 As Boolean = True
    Dim Full_Scr As Boolean = True
    Dim prog_run As Boolean = True
    Dim dr As Boolean = False
    Dim m As Integer
    Dim displayWiHe As Point
    Dim Display_Mode As DisplayMode
    Dim imi As Integer
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Width = bbwihe.X
        Height = bbwihe.Y
        Show()
        displayWiHe.X = Display_Mode.Width
        displayWiHe.Y = Display_Mode.Height
    End Sub
    Private Sub Form1_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        Exit_prog()
    End Sub
    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        If Start_1 Then Start_1 = False : Run_form()
    End Sub
    Private Sub Run_form() 'Основной цикл программы
        Init_Dd()
        load_texture()
        Do While prog_run
            Graf_paint()
            Threading.Thread.Sleep(1)
            Application.DoEvents()
        Loop
    End Sub
    Private Sub Init_Dd() ' Инициализация Direct3D.Device  
        d3dpp.DeviceWindow = Me
        d3dpp.BackBufferCount = 1
        d3dpp.BackBufferFormat = Format.X8R8G8B8
        If Full_Scr = False Then 'Это условие нужно для того, чтобы правильно отображалось в оконном режиме
            d3dpp.BackBufferWidth = bbwihe.X
            d3dpp.BackBufferHeight = bbwihe.Y
        End If
        d3dpp.SwapEffect = SwapEffect.Discard
        d3dpp.PresentationInterval = PresentInterval.One
        d3dpp.Windowed = Full_Scr
        d3dpp.EnableAutoDepthStencil = True
        d3dpp.AutoDepthStencilFormat = DepthFormat.D24S8
        d3dev = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Handle, CreateFlags.MixedVertexProcessing, d3dpp)
        dr = False
    End Sub
    Private Sub load_texture() 'Загрузка текстуры шрифта инициализация спрайта
        sprit = New Sprite(d3dev)
        d3dfont1 = New Font(d3dev, New System.Drawing.Font("Segoe Print", 22, FontStyle.Regular, GraphicsUnit.Pixel))
        'Не забудьте указать путь к изображению для текстуры
        textur1 = TextureLoader.FromFile(d3dev, "1.png", 0, 0, 0, Usage.None, Format.Unknown, Pool.Default, Filter.None, Filter.None, 0)
    End Sub
    Private Sub Graf_paint() 'Выводим графику
        d3dev.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, bkgcolor, 1, 0)
        d3dev.BeginScene()
        sprit.Begin(SpriteFlags.SortTexture Or SpriteFlags.AlphaBlend)
        sprit.Draw(textur1, Vector3.Empty, New Vector3(100, 100, 0), Color.White.ToArgb())
        sprit.End()
        d3dfont1.DrawText(Nothing, "Для переключения режима нажмите пробел", 50, 300, Color.Green)
        If Full_Scr = False Then
            d3dfont1.DrawText(Nothing, "Полноэкранный режим", 200, 350, Color.Blue)
        Else
            d3dfont1.DrawText(Nothing, "Оконный режим", 250, 350, Color.Blue)
        End If
        d3dfont1.DrawText(Nothing, "Для выхода из программы нажмите Esc", 50, 400, Color.Red)
        d3dev.EndScene()
        d3dev.Present()
    End Sub
    Private Sub Pere_init()
        d3dev.Dispose()
        textur1.Dispose()
        Run_form()
    End Sub
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Space Then
            If Full_Scr = True Then
                Full_Scr = False
                FormBorderStyle = FormBorderStyle.FixedSingle
                Pere_init()
            Else
                Full_Scr = True
                Display_Mode.Width = displayWiHe.X
                Display_Mode.Height = displayWiHe.Y
                FormBorderStyle = FormBorderStyle.Sizable
                Pere_init()
            End If
        End If
        If e.KeyCode = Keys.Escape Then
            Exit_prog()
        End If
    End Sub
    'Событие потери устройства Direct3D.Device
    Private Sub Device_Lost(sender As Object, e As EventArgs) Handles d3dev.DeviceLost
        If dr = False Then dr = True : Pause_dev()
    End Sub
    Private Sub Pause_dev() 'Ожидаем готовности устройства
        d3dev.CheckCooperativeLevel(imi)
        If imi <> 0 Then
gg:
            Application.DoEvents()
            d3dev.CheckCooperativeLevel(imi)
            If imi = -2005530520 Then GoTo gg
            If imi <> -2005530520 Then Pere_init()
            d3dev.Reset()
            GoTo gg
        End If
    End Sub
    Private Sub Exit_prog()
        prog_run = False
        d3dev.Dispose()
        Application.Exit()
        End
    End Sub
End Class
Вложения
Тип файла: zip DirectX Full Screen.zip (76.5 Кб, 6 просмотров)
0
18.11.2018, 20:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2018, 20:22
Помогаю со студенческими работами здесь

Ищу примеры интересных и наглядных макросов
Ищу интересные наглядные макросы (или задания) для школьников, приблизительно на 5-6 академических...

Ищу примеры реализации длинной арифметики
Здравствуйте! Скиньте пожалуйста примеры решения задач на тему &quot;Длинная арифметика&quot;! Желательно с...

Ищу простой 3D игровой движок на С++ и DirectX
Доброго времени суток. Мне необходимо найти исходник простой 3D игры для демонстрации ее, пусть...

Ищу примеры создания сервиса для Android в RadStudio 10
Там читал что можно создавать сервис для Android. Есть примеры?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru