Mikle
Ну как там константы?
Делал проверку альфы у спрайтов и обнаружил что метод:
texture.GetSurfaceLevel(0).GetData VarPtr(rect), 4, ByVal VarPtr(data)
жрет много времени...FPS падает от 800 до 85 при проверке в каждом цикле...
Походу это из за надстройки в Surface.GetData... Может сделать еще функцию GetPixel(x as long,y as long) as boolean в которой не будет надстройки?
up
max255
У меня опять завал работы, чуть подожди.
О какий текстурных константах речь? MaxWidth и MaxHeight есть.
Mikle
> У меня опять завал работы, чуть подожди.
Понял...
> О какий текстурных константах речь? MaxWidth и MaxHeight есть.
Поддержка текстур с размерами не степень двойки.
Mikle
Проверь константы для TestCooperativeLevel в типе HRESULT, мне кажется что там не те константы...
max255
Освобожусь 13-го июня, всё сделаю.
Сделал полноценный загрузчик текстур, как CreateTextureFromFile, так и CreateTextureFromFileEx.
Кое-что ещё обновил.
Константы для TestCooperativeLevel в типе HRESULT проверил, правильные.
Mikle
> Сделал полноценный загрузчик текстур, как CreateTextureFromFile, так и
> CreateTextureFromFileEx
Весч... Потестирую...
Посмотри еще 15 пост вторую часть... Такое реально сделать?
GetPixel сделать можно, попробую.
Вот пример корректного сворачивания-разворачивания D3D приложения в оконном и полноэкранном режимах:
FullScreen
Mikle
> GetPixel сделать можно, попробую.
Буду ждать обновления :)
Mikle
> Вот пример корректного сворачивания-разворачивания D3D приложения в оконном и
> полноэкранном режимах
Поковыряю как обновлю классы dx_vb в двиге...
Уже столкнулся с тем что не могу узнать исходный размер текстуры... Ща переделаю загрузку...
Mikle
Кстати проверь константы фильтра....
Гружу текстуру не степени 2 так:
Set s_texture = CreateTextureFromFileEx(g_dev, file, 0, 0, 1, D3DUSAGE_NONE, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, VarPtr(SrcInfo))
все тянется...
А если так, все норм...
Set s_texture = CreateTextureFromFileEx(g_dev, file, 0, 0, 1, D3DUSAGE_NONE, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_POINT, D3DX_FILTER_POINT, 0, VarPtr(SrcInfo))
Посмотрел твой пример... Попробуй поставить точки останова в операторе выбора в рендере... У меня при любых манипуляциях с приложением
туда никто не заходит...
Обновил набор туториалов, исправил ошибку в компиляторе шейдеров, теперь работает с русскими именами.
Mikle
Посмотрел тутариалы... Классно...
Можешь дать ссылку на инфо как юзать шейдеры на DX9?
Mikle
В твоем примере вообще закоментировал код
Select Case Dev.TestCooperativeLevel
Case D3DERR_DEVICELOST
Exit Sub
Case D3DERR_DEVICENOTRESET
If FullScreen Then
Dev.Reset d3dppF
Else
Move meLeft, meTop, meWidth, meHeight
Dev.Reset d3dppW
End If
End SelectИ ничего не изменилось...
max255
> Можешь дать ссылку на инфо как юзать шейдеры на DX9?
Я пользуюсь DX SDK, причём можно не качать всё целиком, а только .chm файл - это вся документация.
max255
> В твоем примере вообще закоментировал код
> И ничего не изменилось...
Это на случай потери девайса по внешним причинам, когда в Винде что-то происходит. А то, что вызвано тобой обрабатывается в программе в другом месте.
По посту 25: а в DX8 не проверял, как должно быть?
Mikle
> По посту 25: а в DX8 не проверял, как должно быть?
Вот рабочий код с восьмерки...
If g_device_caps.TextureCaps And D3DPTEXTURECAPS_POW2 Then 'загружаем в зависимости от железа
Set texture_buf = g_d3dx.CreateTextureFromFileEx(g_dev, file, 0, 0, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, s_src_data, ByVal 0)
Else
Set texture_buf = g_d3dx.CreateTextureFromFileEx(g_dev, file, 0, 0, 0, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, s_src_data, ByVal 0)
End IfТема в архиве.