Общество изобретателей велосипедов
GameDev.ru / Сообщества / Вело-изобретатели / Форум / 2D движок SR2D, Софтверный движок для работы с 2D графикой на VB6, vb.net, C# (35 стр)

2D движок SR2D, Софтверный движок для работы с 2D графикой на VB6, vb.net, C# (35 стр)

Страницы: 134 35 36 3739 Следующая »
MikleМодераторwww8 окт. 201815:38#510
SilentPrayerCG
> в 32 битной версии, получается так
Правильно.
Попробуй с помощью SetPixel поставить несколько ярких точек на SprBack, просто проверить, это SetDiBitsToDevice не срабатывает, или что-то другое.
SilentPrayerCGПостоялецwww8 окт. 201817:02#511
попробовал так
+ Показать

результат такой-же, ошибки нет, но чистое окно
http://funkyimg.com/i/2LV4w.png
MikleМодераторwww8 окт. 201819:39#512
Похоже, нужно разбираться с SetDiBitsToDevice для начала.
Можешь скинуть проект с скомпилированной dll? Попробую поковырять.
SilentPrayerCGПостоялецwww8 окт. 201822:16#513
https://gamedev.ru/files/?id=134830

вот. на всякий случай перепроверил все. с целевым процессором 32, выдает ошибку, стало быть я не натупил и библиотека вышла х64, как нужно.

я, если что, использовал visual studio community, так-же как и тогда, когда я несколько лет назад об этом писал)
в данном случае это последняя, 2017 (превью даже), она бесплатная, не надо ни с чем заморачиваться, залогиниться только в неё и все
кроме неё держу 2015, которую можно выдернуть только если подписаться на девелоперскую каку-то программу майкрософта, (ну либо скачать с торрента наверное)

Правка: 9 окт. 2018 12:06

MikleМодераторwww9 окт. 201813:20#514
Благодарю, вечером попробую разобраться.
MikleМодераторwww9 окт. 201821:23#515
SilentPrayerCG
Так и есть, проблема с SetDiBitsToDevice. Я убрал Render вообще, в Form1_Load оставил только это:
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    SprCol = New Sprite("wall_col.jpg", , 400, 400)
    SprCol.SaveToFile("test.png", System.Drawing.Imaging.ImageFormat.Png, False)
    SprCol = Nothing
    Me.Dispose()
  End Sub

Файл "test.png" появился, размер 400*400, выглядит корректно, то есть сработал Resize из dll.
Надо поспрашивать дотнетчиков про особенности использования WinAPI на 64-битной платформе.
SilentPrayerCGПостоялецwww10 окт. 20180:14#516
Вопрос могут ли вообще функции из gdi32 импортнутые работать под 64.
Поспрашивай, а то я тут никого не знаю. Для меня весь геймдев на самом деле упирается в эту тему)
Мое предположение, переименовать gdi32 в gdi64 разумеется не сработало, я бы удивился конечно если-бы сработало
animertПостоялецwww10 окт. 20189:08#517
К слову, gdi32 так называется не из-за 32 битности, под 64 виндой gdi32 64 битная

Правка: 10 окт. 2018 9:08

MikleМодераторwww10 окт. 20189:24#518
animert
> под 64 виндой gdi32 64 битная
Точнее, есть две версии, и 32-х, и 64-х.

SilentPrayerCG
Попробуй поменять в bi32BitInfo поле

.biBitCount = 32
на
.biBitCount = 64
Там же PTR, по идее, тоже нужно сделать х64 и, соответственно, поменять строку:
PTR = GCH.AddrOfPinnedObject.ToInt32
на такую:
PTR = GCH.AddrOfPinnedObject.ToInt64
А то я до машины, где это всё можно делать, доберусь только поздно вечером.

Правка:
biBitCount - это, видимо, разрядность цвета, так что менять не нужно, попробуй для начала PTR.

Правка: 10 окт. 2018 10:36

SilentPrayerCGПостоялецwww10 окт. 201818:04#519
Я сам только вечером до машины добрался) Еще пока не проверял. Надо проверить

@animert ну я на самом деле так и понял, что 32 это скорее всего не 32 бита разрядности.
Я на самом деле до сих пор путаюсь во всех этих вещах, в плане того что х32 х64 х86, х32 это разрядность, а х86 это архитектура
а что в данном случае, 32 в gdi32... я по этому и зачеркнул, это было тупо ожидать, что это сработает

update:
в процедуре Init же?
поменял птр на 64, ничего не дало, пустая форма
попробовал биткаунт поменять тоже также

Правка: 10 окт. 2018 18:13

MikleМодераторwww11 окт. 201822:26#520
SilentPrayerCG
Заработало: http://bbs.vbstreets.ru/viewtopic.php?f=2&t=56467
SilentPrayerCGПостоялецwww11 окт. 201823:00#521
Mikle
Это хорошо. Получается останется только _АСМ функции переписать под обычный СИ? И внести коррективы под х64 в спрайт?
Если заработает все хорошо, можем кстати заодно на деле проверить разницу производительности.
У меня как раз сейчас машина неплохая, посмотрим будем ли существенная потеря при отказе от _АСМ.

Я так понял его ничем не заменить? Т.е вижл студия отказывается под х64 компилить _АСМ потому что он не поддерживается этой архитектурой. Но я так понял это в рамках среды именно.
А та библиотека что мне друг кинул, видимо это что-то другое.

Ну т.е. мы говорили про _АСМ, и он сказал что он мол будет отказываться поголовно от прямых инструкций в пользу этой штуки, где ты пишешь функции обычным языком, а она вроде как сама конвертирует под целевую платформу.
Но честно я так и не понял, можно ли вот заменить твои _АСМ вставки, в данном случае, на функции написанные под эту библиотеку или нет.

Мы часто когда общаемся на программистские темы, он забывает, что я нуб который только чуть чуть знает VB.net, и в итоге, видимо мы плохо понимаем друг друга.

the trickПостоялецwww11 окт. 201823:50#522
Можно асм отдельно скомпилировать в obj/lib и подключить к C проекту. Также интринсики (xmmintrin.h) можно прямо в С юзать.
SilentPrayerCGПостоялецwww14 окт. 201813:34#523
Я может спрашивал раньше (100 лет назад), не помню уже.
Ресайз через sr2d только через создание нового спрайта делается?
т.е dim resizedpsrite as new srpite (oldsprite, newsize.width, newsize.height) так?
это не медленно разве будет?
может есть какой-то другой способ, если этот не самый лучший?
MikleМодераторwww14 окт. 201813:57#524
SilentPrayerCG
Можно LoadFromSprite сделать Public, это будет быстрее работать, особенно если спрайт уже нужного размера.
Страницы: 134 35 36 3739 Следующая »

/ Форум / Общество изобретателей велосипедов / SR2D - софтовый 2D движок

2001—2018 © GameDev.ru — Разработка игр