Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/41: Рейтинг темы: голосов - 41, средняя оценка - 4.95
30 / 5 / 0
Регистрация: 15.11.2009
Сообщений: 34

Нужны ресурсы по использованию DirectX 9

21.11.2009, 12:58. Показов 8191. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И еще народ не подскажите сайтик где можно почитать про использование DirectX 9 в Visual Basic 8? Я вот надыбал парочку в одном тупо только код. (ну парочка пояснений, я все равно ниче не понял.) так то я в 3D немного понимаю. (делал мультики и картинки в Autodesk 3ds Max 9). а во втором про Directx 8 (много че отличается).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2009, 12:58
Ответы с готовыми решениями:

Нужны уроки, ресурсы, статьи по OpenGL\DirectX
Здравствуйте, дайте линки на уроки по C# + OpenGL\DirectX. Буду очень благодарен. За ранее спасибо.

Нужны примеры программ по использованию и работы с массивом и с файлом
Здраствуйте. нужны примеры программ по использованию и работы с массивом и с файлом( например вывести на экран n строку или символ)

Нужны ресурсы для изучения ассемблера
Если кто знаит дайти пажалуйста ссыли кде расказывают кто как начинал прогать на асемблере под вынь в кернел мод

12
1 / 1 / 0
Регистрация: 06.01.2010
Сообщений: 4
06.01.2010, 19:31
Нейтрон, вы разобрались как применять Direct X под VB? Меня этот вопрос тоже сильно интересует, если разобрались подскажите и мне.
0
 Аватар для XIST
1960 / 1061 / 148
Регистрация: 01.10.2009
Сообщений: 3,589
Записей в блоге: 1
06.01.2010, 19:40
Вот сборка, автор Mikle. Были где-то его примеры, найду где скину. Но это VB6 и DX8
Вложения
Тип файла: zip fBook.zip (89.7 Кб, 543 просмотров)
0
1 / 1 / 0
Регистрация: 06.01.2010
Сообщений: 4
07.01.2010, 13:05
С Рождеством Христовым! Большое спасибо за помощь, начал разбиратьтся, немного прояснилось, но не все примеры из книги работают. Буду разбираться дальше, если Вам что нибудь по этой теме попадется сбросьте пожалуйста.
1
30 / 5 / 0
Регистрация: 15.11.2009
Сообщений: 34
07.01.2010, 13:10  [ТС]
Вот пример игры. я там правда немножко коечо поизменял но принцып тот же самый.
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Imports Microsoft.DirectX.DirectSound
Imports Microsoft.DirectX.DirectInput
Public Class Form1
    Dim x As Integer = 0
    ' Объявление переменных Direct3D
    Private Direct3D_Device As Direct3D.Device
    Private Direct3D_PresentParameters As New Direct3D.PresentParameters
    Private Ship_1, Ship_2, Ship_3, Planet As Direct3D.Mesh
    Private Direct3D_Material As Direct3D.Material
 
    ' Объявление переменных DirectSound
    Private DirectSound_Device As DirectSound.Device
    Private DirectSound_SecondaryBuffer As DirectSound.SecondaryBuffer
 
    ' Объявление переменных DirectInput
    Private DirectInput_Device As DirectInput.Device
    Private DirectInput_MouseState As New DirectInput.MouseState
 
    ' Объявление остальных переменных
    Private Ship_Matrix As Microsoft.DirectX.Matrix
    Private VectorOX, VectorOY, VectorOZ, Planet_Position(10000), Ship_Position, Ship_Vector As Microsoft.DirectX.Vector3
    Private AngleX, AngleY As Single
    Private I As Integer
    Private DateTime1 As DateTime
    Dim n As String
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Location = New Point(50, 20) ' Положение окна
        ClientSize = New Size(800, 600) ' Размер окна
 
        ' Инициализация Direct3D в окне программы 
        Direct3D_PresentParameters.Windowed = True
        Direct3D_PresentParameters.SwapEffect = SwapEffect.Discard
        Direct3D_PresentParameters.EnableAutoDepthStencil = True
        Direct3D_PresentParameters.AutoDepthStencilFormat = DepthFormat.D16
        Direct3D_Device = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, CreateFlags.SoftwareVertexProcessing, Direct3D_PresentParameters)
        Direct3D_Device.Transform.Projection = Matrix.PerspectiveFovLH(CSng(Math.PI) / 4, 4 / 3, 1, 100)
 
        ' Освещение (два источника света направленные противоположно друг другу)
        Direct3D_Device.RenderState.Lighting = True
        Direct3D_Device.Lights(0).Diffuse = Color.White
        Direct3D_Device.Lights(0).Type = LightType.Directional
        Direct3D_Device.Lights(0).Direction = New Vector3(0, 0, 1)
        Direct3D_Device.Lights(0).Enabled = True
        Direct3D_Device.Lights(1).Diffuse = Color.White
        Direct3D_Device.Lights(1).Type = LightType.Directional
        Direct3D_Device.Lights(1).Direction = New Vector3(0, 0, -1)
        Direct3D_Device.Lights(1).Enabled = True
 
        ' Инициализация DirectSound 
        DirectSound_Device = New DirectSound.Device
        DirectSound_Device.SetCooperativeLevel(Me, CooperativeLevel.Priority)
        DirectSound_SecondaryBuffer = New SecondaryBuffer("C:\WINDOWS\Media\Windows XP - динь.wav", DirectSound_Device)
 
        ' Инициализация DirectInput 
        DirectInput_Device = New DirectInput.Device(SystemGuid.Mouse)
        DirectInput_Device.SetCooperativeLevel(Me, CooperativeLevelFlags.Exclusive Or CooperativeLevelFlags.Foreground)
 
        ' Инициализация остальных переменных
        VectorOX = New Vector3(1, 0, 0)
        VectorOY = New Vector3(0, 1, 0)
        VectorOZ = New Vector3(0, 0, 1)
        Ship_Matrix.Translate(0, 0, 0)
 
        ' Корабль - сфера и два бокса
        Ship_1 = Mesh.Box(Direct3D_Device, 0.5, 0.003, 0.1)
        Ship_2 = Mesh.Box(Direct3D_Device, 0.003, 0.5, 0.1)
        Ship_3 = Mesh.Sphere(Direct3D_Device, 0.02, 20, 20)
 
        ' Планета - сфера радиусом 1
        Planet = Mesh.Sphere(Direct3D_Device, 1, 20, 20)
 
        Randomize()
        For I = 0 To 10000
            ' Массив координат планет из случайных чисел в ограниченном пространстве 
            ' 500 единиц по каждому измерению
            Planet_Position(I) = New Vector3(Rnd() * 500 - 250, Rnd() * 500 - 250, Rnd() * 500 - 250)
        Next
 
    End Sub
 
    Private Sub Form1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated
        DirectInput_Device.Acquire() ' Захват устройств ввода при активации окна
    End Sub
 
    Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Escape Then
            Close() ' Если нажат Escape то выход
        End If
    End Sub
 
    Private Sub Form1_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
        While Created
            If (Now - DateTime1).TotalMilliseconds > 30 Then ' Прорисовку выполняем через каждые 30 миллисекунд
                ' если не устанавливать временной интервал, то цикл будут выполняться
                ' через разные промежутки времени, и движение корабля будет неравномерным
                ' Также если ваша система не будет успевать выполнять код за 30 миллисекунд
                ' то движение корабля тоже будет неравномерным, можно увеличить до 40
                ' но это уже будут видимые глазу скачки в движении 
 
                ' Реальное время в миллисекундах, за которое происходит выполнение
                ' цикла отображаем в заголовке окна
                ' Если система успевает выполнить цикл, в заголовке будет отображаться число 31.25
                Me.Text = (Now - DateTime1).TotalMilliseconds
 
                DateTime1 = Now ' Создание точки отсчета времени
 
                Try
                    ' Получение состояние мыши
                    DirectInput_MouseState = DirectInput_Device.CurrentMouseState
                Catch
                End Try
 
                ' Расчет углов поворота корабля в зависимости от состояния мыши
                AngleX = AngleX + DirectInput_MouseState.X / 30000
                If AngleX < -0.03 Then AngleX = -0.03
                If AngleX > 0.03 Then AngleX = 0.03
                AngleY = AngleY + DirectInput_MouseState.Y / 30000
                If AngleY < -0.03 Then AngleY = -0.03
                If AngleY > 0.03 Then AngleY = 0.03
 
                Direct3D_Device.BeginScene() ' Начало сцены
 
                ' Очистка (выполняется в каждом цикле, то есть каждый цикл все объекты прорисовываются заново)
                Direct3D_Device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, System.Drawing.Color.Black, 1, 0)
 
                ' Расчет матрицы направления корабля путем поворота вокруг векторов
                ' VectorOY и VectorOX на углы AngleX и AngleY 
                ' А также поворот самих векторов VectorOY, VectorOX, VectorOZ  
                Ship_Matrix = Ship_Matrix * Matrix.RotationAxis(VectorOY, AngleX)
                VectorOX.TransformCoordinate(Matrix.RotationAxis(VectorOY, AngleX))
                Ship_Matrix = Ship_Matrix * Matrix.RotationAxis(VectorOX, AngleY)
                VectorOY.TransformCoordinate(Matrix.RotationAxis(VectorOX, AngleY))
                VectorOZ.TransformCoordinate((Matrix.RotationAxis(VectorOX, AngleY) * Matrix.RotationAxis(VectorOY, AngleX)))
 
 
                Ship_Vector = New Vector3(0, 0, 1) ' Изначальный вектор направления движения (+1 по оси OZ) 
                Ship_Vector.TransformCoordinate(Ship_Matrix) ' вектор направления движения изменяем матрицей 
                Ship_Position = Ship_Position + Ship_Vector ' К позиции корабля прибавляем вектор движения
 
                ' Устанавливаем координаты положения корабля (поворот, поворот вокруг оси OZ на 45 градусов и позиция) 
                Direct3D_Device.Transform.World = Ship_Matrix * Matrix.RotationAxis(VectorOZ, Math.PI / 4) * Matrix.Translation(Ship_Position)
 
                ' Устанавливаем камеру сзади корабля с направлением обзора по направлению движения корабля
                Direct3D_Device.Transform.View = Matrix.LookAtLH(Ship_Position - Ship_Vector * 1.1, Ship_Position, VectorOY)
 
                ' Цвет материала красный
                Direct3D_Material.Diffuse = Color.Red
                Direct3D_Device.Material = Direct3D_Material
 
                ' Создание корабля
                Ship_1.DrawSubset(0)
                Ship_2.DrawSubset(0)
                Ship_3.DrawSubset(0)
 
                ' Если расстояние между кораблем и планетами меньше 75 то рисуем планету с индексом I 
                For I = 0 To 10000
                    If (Ship_Position - Planet_Position(I)).Length < 75 Then
 
                        ' Устанавливаем координаты положения планеты 
                        Direct3D_Device.Transform.World = Matrix.Translation(Planet_Position(I))
 
                        ' Цвет материала зеленый
                        Direct3D_Material.Diffuse = Color.Green
                        Direct3D_Device.Material = Direct3D_Material
 
                        ' Создание планеты
                        Planet.DrawSubset(0)
                    End If
                Next
 
                ' Если расстояние между кораблем и планетами меньше 1
                ' (столкновение корабля и планеты) то проигрываем звук 
                For I = 0 To 10000
                    If (Ship_Position - Planet_Position(I)).Length < 1 Then
                        DirectSound_SecondaryBuffer.Play(0, BufferPlayFlags.Default)
                    End If
                Next
                Direct3D_Device.EndScene() ' Конец сцены
                Direct3D_Device.Present() ' Прорисовка сцены
                Application.DoEvents() ' Выполнение других событий, для того чтобы
                ' программа не зависала на выполнении цикла 
            End If
        End While
    End Sub
End Class
Добавлено через 4 минуты
Только один момент. нужно добавить ссылку на компоненты Directx.
1
1 / 1 / 0
Регистрация: 06.01.2010
Сообщений: 4
07.01.2010, 13:15
Спасибо за код, но хотелось бы поподробней информацию, чтоб разобраться, кстати код не запустился.
0
30 / 5 / 0
Регистрация: 15.11.2009
Сообщений: 34
08.01.2010, 06:10  [ТС]
Не понял. А че именно не фурычит? Че выдает?
0
1 / 1 / 0
Регистрация: 06.01.2010
Сообщений: 4
08.01.2010, 16:29
На первом этапе придирается к
VB.NET
1
2
3
4
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Imports Microsoft.DirectX.DirectSound
Imports Microsoft.DirectX.DirectInput
, делее есть и другие, я думаю, так как у меня VB6 и формат инициализации в 6-версии другой.
Я так понял Нейтрон пользуешься VB 8? Что это за версия и какую лучше для программирования трехмерной графики. Есть предчувствие, что нужно переходить на Visual Studio 2005, но не уверен в этом, боюсь код из VB6 придется сильно переделывать. Посоветуйте, как быть иначе в полном замешательстве. Заранее спасибо за ответ.
0
eugindows
04.01.2011, 18:25
Цитата Сообщение от DM_AND Посмотреть сообщение
Вот сборка, автор Mikle. Были где-то его примеры, найду где скину. Но это VB6 и DX8
спасибо скачал да вот в коде ошибка в первых экземплярах исправил там написано что есть готовый код на прилагаемом диске можно ссылку на диск а то вдруг я где-то ошибся переписывая
GH
0 / 0 / 1
Регистрация: 25.06.2011
Сообщений: 9
25.06.2011, 13:09
Код заустился и даже без всяких притензий, только вот 2 переменные там лишние: строка 6 и 27.
В коде, строка 75: Planet = Mesh.Sphere(Direct3D_Device, 1, 20, 20)
В переменную Planet заносится информация, что этот объект это сфера с определенными параметрами, а что если заменить эту строку на эту:
Planet = Mesh.FromFile(filename [As String], options [As Microsoft.DirectX.Direct3D.MeshFlags], device [As Microsoft.DirectX.Direct3D.Device])
Насколько я знаю, объект загрузить то он загрузит и впоследствии нарисует, но есть одно НО! как изменить размер этого объекта? И как задать начальный угол поворота?

Студия у меня 2008, Pro.
Может у кого книги какие есть по программированию графики на VB8 (или 9) с использованием DirectX, отавьте ссылочки чтоб скачать.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.06.2011, 00:05
Задайте вопрос в нужном разделе(VB.NET)
0
 Аватар для KoGG
5636 / 1618 / 418
Регистрация: 23.12.2010
Сообщений: 2,426
Записей в блоге: 1
22.07.2011, 10:01
Для начального поворота и изменеия размера используй преобразования матриц . Вот пример на VBA и DirectX 8.1 в Excel.
Вложения
Тип файла: zip SunSys.zip (1.04 Мб, 66 просмотров)
0
 Аватар для KoGG
5636 / 1618 / 418
Регистрация: 23.12.2010
Сообщений: 2,426
Записей в блоге: 1
22.07.2011, 10:34
Вот еще маленький пример по изменению масштаба во вложении.
А подробная система - основа игры стратегии, правда несколько сложная - на основе классов из примеров DirectX 8.1 SDK
лежит здесь:
http://http://gorkavchukkg.nar... ika_3d.rar
Вложения
Тип файла: zip Inflation.zip (32.2 Кб, 57 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2011, 10:34
Помогаю со студенческими работами здесь

Нужны книги и ресурсы по изучению VBA
Доброго Времени форумчане! Скинте книги плиз (ссылки) для начинающих, хочу по больше узнать про VBA. Заранее спасибо

[Mono] MonoDevelop: нужны ресурсы и любая другая информация
Доброго времени суток коллеги. На c# уже программирую с пол года. Сейчас хочу создать кросплатформенное приложение. Как я узнал, самой...

Работа с GMap.WindowsForms. Нужны ресурсы, примеры
Народ, подскажите плиз, где можно глянуть какой нибудь мануал по GMaps. Какие методы,чё делают, ибо функций много, а как ими правильно...

Нужны ресурсы для освоения основ VBA
Здравствуйте с позавчерашнего дня изучаю VBA, через неделю нужно уже курсовой написать игру выбрал пятнашки нашел в инете готовую...

Применение LinQ: нужны задачи или ресурсы
Люди, нужно срочно научиться(овладеть) Linq, те базовые познания, которые имеются не устраивают, может есть какие задачники чтобы порешать?...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru