Войти
Вело-изобретателиФорумdx_vb - порт DirectX9 для VB6

О проекте dx_vb.

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 37 8 Следующая »
#0
16:27, 14 мая 2011

Порт представляет собой одну нативную DLL и несколько модулей на бейсике, подключаемых к проекту.
Таким образом нет необходимости ничего регистрировать в системе, программы работают СРАЗУ, в том числе и не из-под админа в Windows Vista и Windows 7-8-10.
Я не ставлю целью полностью реализовать все ф-ции DX9, дописываю их по мере необходимости.
Переводить DXInput особого смысла не вижу, мышь и клавиатура неплохо опрашиваются и средствами VB6 или API.
На данный момент есть части Direct3D и DirectSound с наиболее употребляемыми ф-циями.
Порт НЕ НУЖДАЕТСЯ в d3dx_XX.dll.

Функции d3dx, реализованные в порту:
1. Шейдеры. Предложен альтернативный вариант, в комплекте к порту поставляется компилятор шейдеров, в самом порту есть ф-ции для загрузки этих шейдеров.
2. Загрузка текстур. d3dx загрузчик текстур реализован в полном объёме.

Скачать порт с несколькими туториалами:
https://yadi.sk/d/2L5Yh8Yo39dfnY

Набор модулей и классов на VB6 и dx_vb.dll являются единым целым, крайне не рекомендуется использовать одновременно части из разных версий.

Примеры работ, использующих dx_vb:
1. Статья "Рендер неограниченной водной поверхности":
http://www.uraldev.ru/articles/id/37
2. Игра "Access of Speed 2":
https://yadi.sk/d/2ao-CaukqvDKc

Приветствуется написание пользователями своих дополнений и расширений к порту, наподобие уже имеющегося компилятора шейдеров.

#1
22:33, 14 мая 2011

Обновил текущую рабочую версию, добавил, наконец-то, капсы, а так же Reset и TestCooperativeLevel. Исправил ошибку с локом объёма.

#2
23:01, 14 мая 2011

Кулл!!! Переделаю наконец ядро...

#3
23:58, 14 мая 2011

Mikle
Кстати как восстанавливать текстуры с флагами D3DUSAGE_DYNAMIC Or D3DUSAGE_AUTOGENMIPMAP в D3DPOOL_DEFAULT?

Делаю так:

Private Sub Form_Resize()
If Me.BorderStyle <> 0 And core.Ready = True Then
 Set Tex = Nothing
 core.ResizeWindow
 Set Tex = CreateTextureFromFile(g_dev, App.Path + "\media\wall_col.jpg")
End If
End Sub

После ресета дает ошибку, мол обьекта Tex нет, если изменить флаги, то все нори...
Где можнт быть проблема?

>Исправил...

#4
10:08, 15 мая 2011

Из SDK:
>Resources in the default pool do not persist through transitions between the lost and operational states of the device. These resources must be released before
>calling reset and must then be re-created.
То есть уничтожай до ресета, хоть и пишет, что объекта нет, потом создавай заново. Либо пользуйся другими флагами.

#5
11:09, 15 мая 2011

Mikle
Уничтожаю так:

 Set Tex = Nothing
После ресета:
 Set Tex = CreateTexture....

В результате, если флаги D3DUSAGE_DYNAMIC в D3DPOOL_DEFAULT то текстура после ресета не создается, возвращает Nothing...
Если юзать MANAGED, то все норм, НО, как я слышал, MANAGED держит текстуры и в озу и в видюхе, а это не тру...

#6
13:42, 15 мая 2011

Решил проблему с уничтожением!

#7
20:04, 19 мая 2011

Как там дела с сурфейсом?

#8
21:37, 19 мая 2011

Сделал, перезалил.

#9
1:50, 25 мая 2011

Mikle
Ковырялся в капсах и... обнаружил что нет констант...
Можно их добавить?

Ну или хотя-бы скажи где взять их значения...

#10
9:56, 25 мая 2011

>обнаружил что нет констант
Каких, caps2-caps3? Добавлю.

#11
13:01, 25 мая 2011

Mikle
И текстурных констант...

#12
3:49, 27 мая 2011

Трабла...

  g_dev.DrawIndexedPrimitiveUp D3DPT_TRIANGLELIST, 0, b_text_len * 4&, b_text_len * 2&, VarPtr(index(0)), D3DFMT_UNKNOWN, VarPtr(m_vertex(0)), lenv

Ошибка на DrawIndexedPrimitiveUp, говорит мол деление на ноль... Обычно возникает когда lenv=0, но тут все верно...

#13
9:11, 27 мая 2011

А если всё-таки указать правильный формат индекса?
D3DFMT_INDEX32, а не D3DFMT_UNKNOWN
Но лучше сделать:

Dim index(5) As Integer
И формат D3DFMT_INDEX16.

#14
14:52, 27 мая 2011

Mikle
Понял... Значит нужно выбирать из D3DFMT_INDEXxx...
Спасиб, все заработало...

Страницы: 1 2 37 8 Следующая »
Вело-изобретателиФорумdx_vb - порт DirectX9 для VB6

Тема в архиве.