Страница: 1 |
Страница: 1 |
Вопрос: Инициализация DX в VB2005
Добавлено: 08.04.07 16:14
Автор вопроса: -=Fenix=-
Как правильно инициализировать DirectX?
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
..................................
Private device As Device = Nothing
Shared Sub Main()
Dim frm As New Form1()
If Not frm.InitializeGraphics() Then
MsgBox("Direct3D не инициализируется.")
Return
End If
frm.Show()
While frm.Created
frm.Render()
Application.DoEvents()
End While
End Sub
Public Function InitializeGraphics() As Boolean
Try
Dim presentParams As New PresentParameters
presentParams.Windowed = True
presentParams.SwapEffect = SwapEffect.Discard
device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, presentParams)
Return True
Catch e As DirectXException
Return False
End Try
End Function
Private Sub Render()
If device Is Nothing Then
Return
End If
device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
device.BeginScene()
device.EndScene()
device.Present()
End Sub
Должно вывести форму залитую голубым цветом. Результат - выводиться обыкновенная форма серого цвета как и была. Почему неработает?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 08.04.07 20:31
Сделай так, чтобы этот код срабатывал не при запуске формы, а при нажатий на кнопку.
Номер ответа: 2
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #2
Добавлено: 08.04.07 21:57
Поставь себе vb .net 2005 и я тебе сброшу проект, где все прекрасно заливается 192-496-851
Номер ответа: 3
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #3
Добавлено: 11.04.07 18:19
frm.Created - не лучшее условие выполнения цикла рендеринга...
Номер ответа: 4
Автор ответа:
Vinzent
Вопросов: 2
Ответов: 9
Профиль | | #4
Добавлено: 08.05.07 17:23
По моему скопировано правильно.) А ты уверен что прога начинается с sub main? Еще вопрос почти по теме. Как применять матрицы к конкретным объектам?
Номер ответа: 5
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #5
Добавлено: 08.05.07 19:11
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
g = e.Graphics
Dim m As New System.Drawing.Drawing2D.Matrix(1, 0, 0, 1, 0, 0)
m.Translate(p.X, p.Y)
g.Transform = m
g.ScaleTransform(MScale, MScale)
g.TranslateTransform(-p.X, -p.Y)
g.DrawLine(Pens.Blue, 100, 200, 200, 20)
g.DrawLine(Pens.Blue, 100, 100, 20, 20)
g.DrawRectangle(Pens.Blue, 100, 100, 20, 20)
End Sub
Номер ответа: 6
Автор ответа:
Vinzent
Вопросов: 2
Ответов: 9
Профиль | | #6
Добавлено: 09.05.07 14:26
Если что извините, смотрел только код.) Нет, я имею ввиду матрицы в direct3d... Есть метод чтобы применять матрицы мира/просмотра/проекции.. А операции с отдельными объектами? А за код все равно спасибо, пригодится,)
Номер ответа: 7
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #7
Добавлено: 14.06.07 02:38
'Planka
'device.Transform.World.Translate(Noid.Planka.X, 0, 0)
device.Transform.World = Matrix.Translation(Noid.Planka.X, 0, 0)
device.DrawPrimitives(PrimitiveType.TriangleList, countKirp * 3, countPlanka)
'Ball
'device.Transform.World.Translate(Noid.Ball.X, Noid.Ball.Y, 0)
device.Transform.World = Matrix.Translation(Noid.Ball.X, Noid.Ball.Y, 0)
device.DrawPrimitives(PrimitiveType.TriangleList, (countKirp + countPlanka) * 3, countBall)
'Kirp
device.Transform.World = Matrix.Translation(0, 0, 0)
device.DrawPrimitives(PrimitiveType.TriangleList, 0, countKirp)
Номер ответа: 8
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #8
Добавлено: 14.06.07 02:48
Вопрос: (vb2005, DirectX)
Запускаю сделанную мной игрушку.
Иногда притормаживает, от 25 до 100 FPS.
Во время игры запускаю фильм в Light Alloy.
Игра начинает просто летать. все время 100-110 FPS. В чем дело?