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

О проекте dx_vb. (3 стр)

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

Страницы: 1 2 3 4 58 Следующая »
#30
23:52, 28 июня 2011

Примеры на DX8 и DX9:
http://tuapse-mikle.narod.ru/Test.zip
Работают одинаково, только D3DX_DEFAULT я не сделал - оно имеет контекстно разное значение. Мипфильтр ни на что не влияет пока один мипуровень.

#31
11:48, 29 июня 2011

Подготовил демку...  MXEngine_test
Смотри в классе MXSprite функцию CreateFromFile, там строки кода закомментированы...
Посмотри как они работают...
С API загрузчиком все норм работало...

Mikle
А насчет фулскрина... Ты сделал сброс устройства в ресайзере окна, а я проверял его состояние в каждом цикле и если надо сбрасывал...
Проверил отладчиком при подвисании TestCooperativeLevel возвращает какое-то значение...
Вогнал его в DXErr пишет: HRESULT: Lost Device...

Т.Е. в случае alt+tab происходит ресайз окна, теряется устпройство, и ты тут же его восстанавливаешь...
А у меня потерянное устройство заводится благодаря проверке его состояния в каждом цикле...

>добавлено через 5 минут:
Поменял константы на эти и все заработало

  D3DERR_DEVICELOST = &H88760868 '2152
  D3DERR_DEVICENOTRESET = &H88760869 '2153

#32
23:26, 29 июня 2011

С первым вопросом разобрался - размер файла 880*1280, но D3DX создаёт текстуру 1024*2048. Далее при фильтре D3DX_FILTER_NONE данные загружаются без искажений, а оставшееся место заливается чёрным.
Но если принудительно задать размер, то всё становится нормально:

Set s_texture = CreateTextureFromFileEx(g_dev, file, 880, 1280, 1, D3DUSAGE_DYNAMIC, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, VarPtr(SrcInfo))
Так работает D3DX9, если нужен размер, отличный от степеней двойки - задавай его принудительно.

По константам D3DERR_DEVICELOST и D3DERR_DEVICENOTRESET ты прав, странно, я значения брал из .h файла, может ошибся.

У тебя модуль Math старой версии, в результате тебе пришлось заремить две ф-ции, где есть ViewPort, дело в том, что в DX8 и DX9 формат ViewPort разный, в последней версии dx_vb я полностью переписал математику на DX9. Старайся не использовать модули от разных версий dx_vb.

В математический модуль ты добавил несколько своих ф-ций. Переделай те, которые ничего не возвращают, на Sub, а то получаются ф-ции типа Variant, соответственно тормозят.

Из последней версии я убрал ResizeARGB так как в загрузчике текстур она больше не нужна, но у тебя, смотрю, задействована. Если надо - в следующей версии верну эту ф-цию.

Не очень понял смысл модуля MXApi - куча Public ф-ций, которые перегружают пространство имён, кроме того некоторые небезопасны. Я придерживаюсь правила делать Private всё, что только можно сделать Private.

#33
0:37, 30 июня 2011

Mikle
> Но если принудительно задать размер, то всё становится нормально...
Где то слышал что вместо размера на девятке можно использовать специальные константы, в духе NO_POW2... Это правда?

Mikle
> У тебя модуль Math старой версии...
Да... Я думал ты его не менял, а потом ошибки посыпались все заменил а за них забыл...
Подобавлял к тебе в классы своих типов... Вот и мучаюсь каждый раз... переписываю заново... (Например D3DVECTOR2L - Long версия итд...)

Mikle
> Из последней версии я убрал ResizeARGB...
Нет, не нужно... Забыл удалить...

Mikle
> Не очень понял смысл модуля MXApi...
Подумаю что можно сделать...
Сделал так потому, что одну и ту же api функцию используют несколько классов...

#34
10:22, 30 июня 2011

max255
> Подобавлял к тебе в классы своих типов.
Сделай свои отдельные модули для этого, будет проще потом. Я не против изменения моих модулей, просто это тебе же путаницу создаёт.
max255
> Сделал так потому, что одну и ту же api функцию используют несколько классов...
От того, что ты api функцию объявишь не один раз в общем модуле, а 10 раз в каждом классе, где она нужна, размер программы не увеличится. Объявление api функций - это не программный код, а директива компилятору, где искать ф-цию.

#35
11:33, 30 июня 2011

Mikle
> если нужен размер, отличный от степеней двойки - задавай его принудительно
Можешь для этого специально сделать функцию D3DXGetImageInfoFromFile()?

#36
12:47, 30 июня 2011

max255
> Можешь для этого специально сделать функцию D3DXGetImageInfoFromFile()?
Сделаю.

#37
22:10, 7 июля 2011

Обновил dx_vb:
http://tuapse-mikle.narod.ru/dx_vb/new_dx_vb.zip
Значительно ускорилось GetData и SetData для сурфейсов и объёмов, для сурфейсов добавил GetPixel. Исправлены константы HResult.
Добавил D3DXGetImageInfoFromFile.

#38
23:31, 7 июля 2011

Классно!!! Теперь наконец закончу загрузчик...

#39
18:06, 23 июля 2011

Mikle
Все таки нужны текстурные константы из капсов(pow2)...
Можно сделать иначе, но тогда упадет скорость загрузки текстур(загрузка-проверка)...

#40
21:11, 23 июля 2011

Обновил dx_vb:
http://tuapse-mikle.narod.ru/dx_vb/new_dx_vb.zip
Добавил TextureCaps.

#41
21:39, 23 июля 2011

Отлично... Приступаю к работе...

#42
17:01, 6 авг. 2011

Нужна функция переводящая D3DColorValue в Long число, и обратно как в DX8...

#43
12:18, 8 авг. 2011

max255
> Нужна функция переводящая D3DColorValue в Long число
Сделал преобразования в обе стороны, перезалил:
http://tuapse-mikle.narod.ru/dx_vb/new_dx_vb.zip

#44
22:37, 8 авг. 2011

Замечен баг...
Функция SetData в Surface работает не верно, при задании любого ректа она копирует все равно в начало текстуры...

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

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