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

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

Модератор: Mikle

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

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

Сообщение Mikle » 08.09.2009 (Вт) 13:17

Решил попробовать написать сие чудо. C++ я не владею настолько, чтобы сделать полноценный COM-враппер, поэтому портирую через нативную DLL, зато меньше проблем с подключением.
Помнится d3drm когда-то начинал подобное, но сразу бросил, и вообще отказался от ООП, я же стараюсь сохранить DX стиль, только ООП формирую уже в VB6.

Код примера использования - в форме, все классы и модули, в папке DX_VB - это компоненты порта, желательно их не изменять.

Теперь не требует D3DX!
Обновлено 27-06-2011.

Скачать версию порта с несколькими туториалами:
http://tuapse-mikle.narod.ru/dx_vb/Tutorials.zip
360 кБ

Скачать компилятор шейдеров:
http://tuapse-mikle.narod.ru/dx_vb/ShaderCompiler.zip

Здесь ПОСЛЕДНЯЯ версия, но без туториалов. Это текущая рабочая версия, постоянно обновляется:
http://tuapse-mikle.narod.ru/dx_vb/new_dx_vb.zip
Последний раз редактировалось Mikle 20.10.2009 (Вт) 12:57, всего редактировалось 9 раз(а).

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

Re: dx9vb

Сообщение Mikle » 08.09.2009 (Вт) 13:19

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

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

Re: dx9vb

Сообщение Mikle » 09.09.2009 (Ср) 16:46

Добавил загрузку текстур.
Немного навёл порядок, теперь практически соответствует привычному. Таких классов (и объектов), как DirectX9 и D3DX9 нет - это модули, соответственно их не нужно создавать и удалять. В остальном как обычно.

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

Re: dx9vb

Сообщение Debugger » 09.09.2009 (Ср) 17:03

Здорово! По первому взгляду на проект мне даже показалось, что это DX8. Держишь стиль!

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

Re: dx9vb

Сообщение DODge » 09.09.2009 (Ср) 19:00

Mikle, тебе только за энтузиазм в этом деле можно выразить респект, но я думаю здесь найдётся много людей кто захочет использовать 9й икс в старом-добром VB6. Так что, я надеюсь, ты это дело не бросишь :!:

З.Ы. я думаю, что ты не исключаешь возможности использовать Reflector с соответвующей студией, чтобы как можно лучше реализовать свою идею :idea:
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: dx9vb

Сообщение Mikle » 09.09.2009 (Ср) 19:15

Спасибо :)
Бросать не собираюсь, не так это сложно, только немножко нудно. Другое дело, что полный порт всего DX я делать тоже не собираюсь. Ближайшая цель - сделать математику векторов и матриц, TextureStageStates и SamplerStates и меши. Такой вариант уже будет вполне годен для простых игр. Дальше буду постепенно добавлять нужное, в первую очередь сурфейсы и шейдеры, далее по желанию, предложения принимаются.
Кроме D3D хочу портировать так же DirectSound, тоже упрощённо, без Capture.

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

Re: dx9vb

Сообщение DODge » 10.09.2009 (Чт) 11:47

"Нудно" - согласен, прекрасно себе это представляю. По мне так, важнее получить шейдеры :) Только по поводу них, лучше сделай так, как они выполнены в 9м, чтобы если народ переходил в итоге на старшие версии ДХ не вставал в ступор, ну это моё некое маленькое желание :) А так ждём новых релизов.

P.S. я буду следить за темой, если что можешь что-нибудь спросить, т.к. я сам уже давно на 9м, помогу чем смогу :wink:
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: dx9vb

Сообщение Mikle » 10.09.2009 (Чт) 15:04

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

Само собой. Если бы не они, меня и DX8 устроил бы.
DODge писал(а):лучше сделай так, как они выполнены в 9м

В каком смысле? HLSL, естественно, будет.
DODge писал(а):если что можешь что-нибудь спросить, т.к. я сам уже давно на 9м

С программированием DX вопросов не возникает, больше бьюсь с самим C++, причём не столько с программированием, сколько со средой.
DODge писал(а):я думаю, что ты не исключаешь возможности использовать Reflector с соответвующей студией

Поясни, о чём речь.

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

Re: dx9vb

Сообщение Debugger » 10.09.2009 (Чт) 16:34

Mikle писал(а):
DODge писал(а):если что можешь что-нибудь спросить, т.к. я сам уже давно на 9м

С программированием DX вопросов не возникает, больше бьюсь с самим C++, причём не столько с программированием, сколько со средой.

Можно поинтересоваться, ты используешь Visual Studio?

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

Re: dx9vb

Сообщение DODge » 10.09.2009 (Чт) 16:39

Mikle писал(а):В каком смысле? HLSL, естественно, будет.

Я имею ввиду их инициализация, обявление, использование. Да, именно HLSL :)
Mikle писал(а):Поясни, о чём речь.

На самом деле я использую Managed DirectX + VB.Net. С помощью указанной программы ты сможешь поковырять этот ДХ и вывести исходник на любом нужном тебе языке, пусть то будет хоть С++ или VB. Она сканирует IL-код программы или библиотеки технологии NET и переводит в исходник со 90% точностью. Просто я говорю о том, что тебе поможет поковырять сам этот ДХ на NET'е.
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: dx9vb

Сообщение Mikle » 10.09.2009 (Чт) 16:52

DODge писал(а): Она сканирует IL-код программы или библиотеки технологии NET и переводит в исходник со 90% точностью.

Я не использую NET в этом проекте, если использовать NET, то меня вполне устраивает vb.net и MDX. Имею кое-какие наработки, например:
http://tuapse-mikle.narod.ru/3DP-Ex.rar
А вот писать маленькую казуалку, требующую фреймворк и установку MDX, это пока ненормально. Для этого хорош vb6 + нативный DX.
Debugger писал(а):Можно поинтересоваться, ты используешь Visual Studio?

Естественно, DLL написана на C++ Express 2008.

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

Re: dx9vb

Сообщение DODge » 10.09.2009 (Чт) 17:39

Mikle писал(а):Я не использую NET в этом проекте... А вот писать маленькую казуалку, требующую фреймворк и установку MDX, это пока ненормально.

Да не, 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: dx9vb

Сообщение Mikle » 13.09.2009 (Вс) 9:29

DODge писал(а):Да не, Mikle, ты меня не понял :) Я не говорю тебе его использовать, нет. Всего лишь поковырять, понять работу некоторых функций, и верно их перенести.

Да я поковырял уже, в прошлом посту ссылочка имеется.

Добавил свет, материалы, трансформации со всей необходимой математикой, TextureStageStates и SamplerStates. До минимально рабочего набора остались меши и индексные буферы.
Нулевой пост обновил, по-прежнему жду багрепорты.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: dx9vb

Сообщение Alprog » 13.09.2009 (Вс) 10:53

Блин, это офигенно!
Помню перерыл Интернет в поисках подобной штуки, но, в итоге, начал перелазить на VB.net.
Сейчас сидел, сдувал пыль с наработок движка на .net, а тут такое... теперь даже не знаю в каком направлении двигаться :)

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

Re: dx9vb

Сообщение DODge » 13.09.2009 (Вс) 15:08

Alprog писал(а):... теперь даже не знаю в каком направлении двигаться :)

Оставайся с VB6 + новоиспечённый DX9, не зря же человек трудится.
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: dx9vb

Сообщение Mikle » 15.09.2009 (Вт) 15:19

Обновил, есть индексные буферы, рендер в текстуру.

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

Re: dx9vb

Сообщение DODge » 15.09.2009 (Вт) 20:43

Mikle писал(а):Обновил, есть индексные буферы, рендер в текстуру.

Mikle, зачётно, супер! Вот оно, то самое, что отличает 9-й от 8-го Икса - рендер в текстуру, одна из самых важных вещей, необходимых для программирования мультимедиа программ развлекательного характера :)
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: dx9vb

Сообщение Debugger » 15.09.2009 (Вт) 20:55

DODge писал(а):
Mikle писал(а):Обновил, есть индексные буферы, рендер в текстуру.

Mikle, зачётно, супер! Вот оно, то самое, что отличает 9-й от 8-го Икса - рендер в текстуру, одна из самых важных вещей, необходимых для программирования мультимедиа программ развлекательного характера :)

Правда? Я был уверен, что 7-8-9 отличаются лишь шейдерами и мелочами, незаметными без лупы.

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

Re: dx9vb

Сообщение DODge » 15.09.2009 (Вт) 23:57

Вообщето, я это написал не для какой-нибудь архиважной информации, а только лишь то, что я имел ввиду невозможности данного функционала ранее на VB6.
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: dx9vb

Сообщение Mikle » 16.09.2009 (Ср) 10:49

При рендере в текстуру глючила микрософтовская реализация dx8vb.dll.

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

Re: dx9vb

Сообщение DODge » 16.09.2009 (Ср) 11:40

Ещё неплохо бы увидеть воспроизведение видео :)
Кстати, Mikle, хотел спросить, эта библа случаем не те файлы использует, которые называются как "d3dx9_XX.dll" :?:
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: dx9vb

Сообщение Mikle » 16.09.2009 (Ср) 14:09

Если пользоваться D3DX, то используется d3dx9_37.dll.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: dx9vb

Сообщение Alprog » 18.09.2009 (Пт) 8:44

При рендере в текстуру глючила микрософтовская реализация dx8vb.dll


А у меня работало на отлично :shock:
Рендерил 3Д пространство на текстуру, затем менял renderTarget и выводил её в приведённых координатах на весь экран.
Также рендерил в текстуру в приведённых координатах, а затем её рендерил на экран, как спрайт (тоже в приведённых координатах).

Или это не то?

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

Re: dx9vb

Сообщение Mikle » 18.09.2009 (Пт) 10:02

А компилил в нативный код? А с оптимизацией?

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: dx9vb

Сообщение Alprog » 18.09.2009 (Пт) 14:10

Compile for Native Code (Optimize for Fast Code)

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

Re: dx9vb

Сообщение lellel » 18.09.2009 (Пт) 16:11

у меня только без оптимизации работал рендер в текстуру..

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

Re: dx9vb

Сообщение Mikle » 07.10.2009 (Ср) 19:17

Переименовал в DX_VB, так как там не только DX9, но и DX8 (для звука).
Первый пост обновил.
Кроме мешей для простых игр есть всё.

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

Re: dx9vb

Сообщение FireFenix » 07.10.2009 (Ср) 19:50

Mikle писал(а):Переименовал в DX_VB, так как там не только DX9, но и DX8 (для звука).
Первый пост обновил.
Кроме мешей для простых игр есть всё.

ммм.... а зачем таскать DX8, если с DX9 вроде иёдт XACT/XAudio?

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

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

Re: dx9vb

Сообщение DODge » 07.10.2009 (Ср) 21:01

Понравился пример со звуком, самые простые манипуляции проигрывания (они и самые нужные) легко выполняются в виде кода. Интересный момент: если верхнюю прокрутку частоты выкрутить влево, то звук будет похож на то, как будто под водой :)

P.S. Извиняюсь за ранее чуть не раздутый холивар про рендер в тестуру. Я сильно ступил, и я вовсе не его имел ввиду. Я хотел сказать о невозможности рендера видео в текстуру. Реально тормознул, да и ещё в заблуждение других людей ввёл. Прошу у всех прощения!
А рендер в текстуру у меня был реализован очень легко на моём старом движке безо всяких проблем.
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: dx9vb

Сообщение Mikle » 16.10.2009 (Пт) 13:07

Решил избавиться от D3DX, математику взял из D3DX8 - она статически линкуется. Написал загрузчик текстур. Пока простенько, но будет расширяться.
Теперь все примеры работают без D3DX!

След.

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

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

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

    TopList  
cron