"dx_vb" - порт DirectX9 для VB6.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx9vb

Сообщение Mikle » 17.10.2009 (Сб) 15:10

Пришла гениальная мысль :)
Сегодня сел, и написал парсер, который на входе получил "d3dxmath8.h" файл, а выдал "cpp" с кодом экспорта всех ф-ций, "def" с правильными именами и "bas" для импорта в бейсик.
Два часа работы - и ВСЯ(!) D3DX8 математика есть в моей DLL:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 20.10.2009 (Вт) 12:58

Ещё обновил, уже можно писать пртличные вещи.
Скачать демку с исходником:
http://tuapse-mikle.narod.ru/World.zip
2.1 мБ
Управление:
стрелки или WASD - перемещение,
мышь - обзор,
I - инверсия,
Home, End, Delete, PgDn - позиция солнца.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: dx_vb, теперь не требует D3DX!

Сообщение FireFenix » 20.10.2009 (Вт) 20:31

http://tuapse-mikle.narod.ru/World.zip

Не качается :(
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: dx_vb, теперь не требует D3DX!

Сообщение DODge » 20.10.2009 (Вт) 21:10

Шикарнейшая работа, Mikle, афигенно!
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 21.10.2009 (Ср) 9:44

FireFenix писал(а):Не качается

Попробуй ещё, у других качается.
DODge писал(а): афигенно!

Спасибо!
Все примеры, естественно, можно применять в своих программах.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 23.10.2009 (Пт) 13:54

Обновил файл по старой ссылке:
http://tuapse-mikle.narod.ru/dx_vb.zip
Теперь есть шейдеры, в комплекте даю компилятор шейдеров с исходником, компилятор нуждается в d3dx9_37.dll, программа, использующая скомпилированный шейдер - нет.
HLSL пока нет, только asm.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: dx_vb, теперь не требует D3DX!

Сообщение djalex777 » 23.10.2009 (Пт) 21:33

Молодец. Достойная штука.

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: dx_vb, теперь не требует D3DX!

Сообщение DODge » 24.10.2009 (Сб) 1:21

Заценил шейдерный компилятор, очень похож на Render Monkey от ATI (в хорошем смысле) - очень продуктивно. Кстати, Mikle, теперь язык HLSL на данном этапе будет легко добавить, по крайней мере так я делаю у себя в движке на VB.NET:
Код: Выделить всё
Effect.shader = Direct3D.Effect.FromString(RenderDevice, HLSLtext, Nothing, Nothing, Direct3D.ShaderFlags.None, Nothing, StringData)
StringData = Effect.shader.Disassemble(False)

И в строковой переменной SrtingData ты получаешь ASM шейдер, что у тебя в файлах PSH и VSH. Я думаю ты без труда сможешь это переделать в то, с чём у тебя там всё переваривается :)
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 24.10.2009 (Сб) 17:54

DODge писал(а):в строковой переменной SrtingData ты получаешь ASM шейдер

Зачем? Можно HLSL и напрямую скомпилировать. Уже сделал, перезалил по той же ссылке.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: dx_vb, теперь не требует D3DX!

Сообщение FireFenix » 25.10.2009 (Вс) 21:16

Бродил по инету и наткнулся на http://files.codes-sources.com/fichier. ... as&lang=en
Там хороший человек перевёл математику DX7 на VB, тогда может и не нужно будет линковать DX8 =)

Mikle
У меня нету VB6, не мог бы ты замерить QueryPerformanceCounter'om скока уходит времени на перемножении матриц 100 000 000 раз? ну т.е. VB6 -> C++ DLL -> DX DLL D3DXMatrixMultiply

я пробовал (VS 2010):
VB.NET Mul = 22 011 582 ~ 850мс
VB.NET + DX DLL Mul ~ в 4-6 раз больше чем VB.NET Mul

на геймдеве были такие результаты
Код: Выделить всё
MDX:
    139 687 500
    141 875 000

VС++9 D3DXMatrixMultiply (в disasm-e реализован через FPU):
    33 750 000
    32 968 750

VC++9 самописный через ссылки на матрицы (r11=a11*b11+..) ключи: /fp:fast
    65 000 000
    64 843 750
    с ключами: /fp:fast /arch:SSE2 (по генерации кода ничего не изменилось, а время просто.. раз на раз)
    63 593 750
    62 500 000

VC++9 mul4x4 (где-то здесь на форуме у кого-то была реализация через SSE mul4x4):
    22 968 750
    23 125 000

SlimDX (september 2008, написан на C++\CLI):
    175 937 500
    178 281 250

XNA2-Matrix, а также XNA3-Matrix, а также самописный mul в простой консоли:
    ~92 000 000

Особенно удивлён результатом, что VB.NET догнал VC++
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 26.10.2009 (Пн) 13:46

Вот тест:
http://tuapse-mikle.narod.ru/TestMatrix.zip
Моя DLL почти вдвое быстрее Микрософтовской dx8vb... 8)
хотя Микрософтовская подключена в TLB, а моя подключена через Declare, что медленнее!
Посмотри результат у себя.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: dx_vb, теперь не требует D3DX!

Сообщение djalex777 » 26.10.2009 (Пн) 13:59

Mikle писал(а):Вот тест:
http://tuapse-mikle.narod.ru/TestMatrix.zip
Моя DLL почти вдвое быстрее Микрософтовской dx8vb... 8)
хотя Микрософтовская подключена в TLB, а моя подключена через Declare, что медленнее!
Посмотри результат у себя.

При выходе из цикла где происходит расчет твоей функцией D3DXMatrixMultiply имеем ошибку 'Overflow' на строке
Код: Выделить всё
s2 = Timer

Исправил тут.. :) Просто получаем переполнение при умножении.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 26.10.2009 (Пн) 17:13

Переполнение там есть, MatrixMultiply должна его корректно обрабатывать, моя обрабатывает, а dx8vb - нет, странно, что в скомпиленном файле нет ошибки.
Поменяй матрицы со случайных на единичные:
Код: Выделить всё
  m1.m11 = 1: m1.m12 = 0: m1.m13 = 0: m1.m14 = 0
  m1.m21 = 0: m1.m22 = 1: m1.m23 = 0: m1.m24 = 0
  m1.m31 = 0: m1.m32 = 0: m1.m33 = 1: m1.m34 = 0
  m1.m41 = 0: m1.m42 = 0: m1.m43 = 0: m1.m44 = 1
  m2.m11 = 1: m2.m12 = 0: m2.m13 = 0: m2.m14 = 0
  m2.m21 = 0: m2.m22 = 1: m2.m23 = 0: m2.m24 = 0
  m2.m31 = 0: m2.m32 = 0: m2.m33 = 1: m2.m34 = 0
  m2.m41 = 0: m2.m42 = 0: m2.m43 = 0: m2.m44 = 1

Такие можно умножать сколько хочешь без переполнения.
Скорость та же.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: dx_vb, теперь не требует D3DX!

Сообщение djalex777 » 26.10.2009 (Пн) 17:55

Я так и сделал. Да твоя скорость получается в 2 раза быстрее минимум.

Count = 100000000
dx_vb = 2.386719
microsoft = 7.550781

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 02.11.2009 (Пн) 11:54

Демка:
http://tuapse-mikle.narod.ru/World.zip
2.4 мБ
Управление:
стрелки или WASD - перемещение,
мышь - обзор,
I - инверсия,
Home, End, Delete, PgDn - позиция солнца.

Нужны PS_2_0.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: dx_vb, теперь не требует D3DX!

Сообщение lellel » 02.11.2009 (Пн) 12:08

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

Добавлено позднее
кажется это мой комп виноват...

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Re: dx_vb, теперь не требует D3DX!

Сообщение StimorolD3DX » 03.11.2009 (Вт) 21:21

Mikle писал(а):Демка:.

Шикарно Mikle, такое бы лет 5 назад :drunken:

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: dx_vb, теперь не требует D3DX!

Сообщение DODge » 03.11.2009 (Вт) 21:42

Да уж. И сколько тем тогда было поднято... Только сейчас это осуществлено, на заре 11-го икса (никого не хочу обидеть) :oops:

P.s. а тему можно переименовать в "dx9vb6.dll", для поднятия интереса к ней :roll:
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: dx_vb, теперь не требует D3DX!

Сообщение Debugger » 03.11.2009 (Вт) 22:04

VB6 и её представители всегда славились консерватизмом.
Отлично, ведь довольно много популярных игр, в которые до сих пор играют люди, написаны под DX9.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: dx_vb, теперь не требует D3DX!

Сообщение djalex777 » 04.11.2009 (Ср) 0:21

А что мешает таким же образом портировать DX10 или 11?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: dx_vb, теперь не требует D3DX!

Сообщение Debugger » 04.11.2009 (Ср) 11:12

Так как
VB6 и её представители всегда славились консерватизмом.

:?:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 04.11.2009 (Ср) 14:01

StimorolD3DX писал(а):
Mikle писал(а):Демка:.

Шикарно Mikle, такое бы лет 5 назад :drunken:

А ведь ничего не мешало сделать.
djalex777 писал(а):А что мешает таким же образом портировать DX10 или 11?

Ничего, только зачем? Этот проект - не убийца Крайзиса, а скромный порт для производства казуалок. ИМХО dx9 для этого подходит в самый раз. Устроил бы и dx8, если бы не проблемы с распространением dx8vb.dll, то же демку можно сделать и на PS_1_4, VS_1_1, просто мне PS_2_0 больше нравится.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: dx_vb, теперь не требует D3DX!

Сообщение djalex777 » 04.11.2009 (Ср) 14:37

Mikle писал(а):
djalex777 писал(а):А что мешает таким же образом портировать DX10 или 11?

Ничего, только зачем? Этот проект - не убийца Крайзиса, а скромный порт для производства казуалок. ИМХО dx9 для этого подходит в самый раз. Устроил бы и dx8, если бы не проблемы с распространением dx8vb.dll, то же демку можно сделать и на PS_1_4, VS_1_1, просто мне PS_2_0 больше нравится.

Майкл это был не тебе ответ :) А DODge на его фразу по-поводу 11 икса :) Кстати, вдохновленный идеей майкла, я начал портировать последнюю версию PhysX.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: dx_vb, теперь не требует D3DX!

Сообщение lellel » 01.12.2009 (Вт) 3:34

у меня ShaderCompiler под Win7 жалуется на отсутствие библиотеки d3dx_sc.dll хотя библиотека и лежит рядом...
в систем32 кинул, но зарегать не получается( даже упаковщиком воспользовался и установил не помогает..
у кого нить под Win7 or WinVista работает?
а кто нить вообще хоть одну длл под вистой зарегал?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 01.12.2009 (Вт) 16:29

Из-под админа регистрировал? Попробуй зарегать в Safe mode.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: dx_vb, теперь не требует D3DX!

Сообщение lellel » 03.12.2009 (Чт) 23:54

в Safe mode тоже не получается..

Добавлено позднее:
странно, но под WinXP та же ошибка, хотя до переустановки системы все работало..

Добавлено позднее:
решил проблему, просто d3dx9_37.dll не было...

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: dx_vb, теперь не требует D3DX!

Сообщение lellel » 06.12.2009 (Вс) 2:38

блин.. ошибку с отсутствием длл вроде решил, но теперь все равно ничего не компилится, "ошибка компиляции"..

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 06.12.2009 (Вс) 10:34

"ошибка компиляции"..
Это уже шейдер неправильный. Или мои примеры тоже не компилятся?
Расскажи как проблему с DLL фиксил, пригодится опыт.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: dx_vb, теперь не требует D3DX!

Сообщение lellel » 06.12.2009 (Вс) 17:24

то то и оно, что примеры не компилятся..
а про длл, не знаю уж как именно она прописалась или не прописалась, но твоя длл использовала d3dx9_37.dll а у меня ее не было, скачал, положил в папку виндоус(правда зарегалась она с ошибкой)..
имхо, лучший способ добавления всех длл это использовать упаковщик(тот что в комплекте)..

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: dx_vb, теперь не требует D3DX!

Сообщение Mikle » 06.12.2009 (Вс) 19:28

Значит не зарегана d3dx9_37.dll, так как d3dx_sc.dll не требует регистрации. Попробуй удалить d3dx9_37.dll и нормально установить DX Runtime.

Пред.След.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList