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

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

21.11.2009, 12:58. Показов 8273. Ответов 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
1962 / 1072 / 148
Регистрация: 01.10.2009
Сообщений: 3,620
Записей в блоге: 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
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 1
22.07.2011, 10:01
Для начального поворота и изменеия размера используй преобразования матриц . Вот пример на VBA и DirectX 8.1 в Excel.
Вложения
Тип файла: zip SunSys.zip (1.04 Мб, 66 просмотров)
0
 Аватар для KoGG
5646 / 1628 / 418
Регистрация: 23.12.2010
Сообщений: 2,450
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru