Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация 3D, Желательно в picturebox 
:(
    Опции темы
Kirill89
Дата 10.5.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Я уже работал с 3d в visual С++ 6.0 и обсалютно не представляю как это сделать в vb.net
Подскажите пожалуйста. Меня интересует не загрузка 3d моделей, а рисование мешей - это попроще, и , желательно, наложение текстур.
Сразу скажу  smile , потому - что уже искал... резулбтат поисков приближен к нулю :(
В качастве примера хотелось бы видеть простой 2d триугольник в 3d пространстве с теустурой - любой, или если есть, любой готовый исходник.
Эту задачу очень нужно решить! Если никто не может помоч готовым кодом, подскажите где копать, пожалуйста.
Зарание благодарю!


--------------------
PM MAIL WWW   Вверх
Kirill89
Дата 16.5.2007, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Почти все сделал, но у меня 
Цитата

LoaderLock was detected
Message: DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3D\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll' 
is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image 
initialization function since doing so can cause the application to hang.

В чем проблема? Как её исправить?

На всякий случай публикую код:
Код

Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class Form1
    Private device As Device = Nothing
    Private vertexBuffer As VertexBuffer = Nothing
    Public Function InitializeGraphics() As Boolean
        Try
            Dim presentParams As New PresentParameters
            presentParams.Windowed = True
            presentParams.SwapEffect = SwapEffect.Discard
            device = New Device(0, DeviceType.Reference, Me, _
                 CreateFlags.SoftwareVertexProcessing, presentParams)
            AddHandler device.DeviceCreated, AddressOf Me.OnCreateDevice
            Me.OnCreateDevice(device, Nothing)
            Return True

        Catch e As DirectXException
            Return False
        End Try
    End Function
    Public Sub OnCreateDevice(ByVal sender As Object, ByVal e As EventArgs)
        Dim dev As Device = CType(sender, Device)
        vertexBuffer = New VertexBuffer(GetType(CustomVertex.TransformedColored), 3, _
            dev, 0, CustomVertex.TransformedColored.Format, Pool.Default)
        AddHandler vertexBuffer.Created, AddressOf Me.OnCreateVertexBuffer
        Me.OnCreateVertexBuffer(vertexBuffer, Nothing)
    End Sub
    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.SetStreamSource(0, vertexBuffer, 0)
        device.VertexFormat = CustomVertex.TransformedColored.Format
        device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1)
        device.EndScene()
        device.Present()
    End Sub
    Shared Sub Main()
        Dim frm As New Form1()
        If Not frm.InitializeGraphics() Then
            MessageBox.Show("Direct3D не инициализируется.")
            Return
        End If
        frm.Show()
        While frm.Created
            frm.Render()
            Application.DoEvents()
        End While
    End Sub

    Public Sub OnCreateVertexBuffer(ByVal sender As Object, ByVal e As EventArgs)
        Dim vb As VertexBuffer = CType(sender, VertexBuffer)
        Dim verts As CustomVertex.TransformedColored() = _
            CType(vb.Lock(0, 0), CustomVertex.TransformedColored())
        verts(0).X = 150
        verts(0).Y = 50
        verts(0).Z = 0.5F
        verts(0).Rhw = 1
        verts(0).Color = System.Drawing.Color.Aqua.ToArgb()
        verts(1).X = 250
        verts(1).Y = 250
        verts(1).Z = 0.5F
        verts(1).Rhw = 1
        verts(1).Color = System.Drawing.Color.Brown.ToArgb()
        verts(2).X = 50
        verts(2).Y = 250
        verts(2).Z = 0.5F
        verts(2).Rhw = 1
        verts(2).Color = System.Drawing.Color.LightPink.ToArgb()
        vb.Unlock()
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
        Render()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Main()
    End Sub
End Class


Мне очень нужна Ваша помощь!

Это сообщение отредактировал(а) Kirill89 - 16.5.2007, 00:23


--------------------
PM MAIL WWW   Вверх
Kirill89
Дата 16.5.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Так, это исправил. Снова проблемы!
Код

device = New Device(0, DeviceType.Reference, Me, CreateFlags.SoftwareVertexProcessing, presentParams) 'Error creating window handle.

 smile 


--------------------
PM MAIL WWW   Вверх
Exception
Дата 16.5.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Может, код инициализации надо изменить?
Глянь функцию InitDirect3D () здесь.
PM   Вверх
Kirill89
Дата 16.5.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Exception, нет, таже самая функция отвечает точно также. Хотя как нистранно, твой пример отлично работает... Может у тебя есть похожый пример с реализацией вертекстного буфера?
Я поразбираюсь ещё, пожалуйста пишите, кто знает как это решить.


--------------------
PM MAIL WWW   Вверх
Kirill89
Дата 16.5.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Я  smile  msdn
Кто столкнулся с моей проблемой меняем
Код

device = New Device(0, DeviceType.Reference, Me, CreateFlags.SoftwareVertexProcessing, presentParams)

на
Код

device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, presentParams)



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.