Добрый день, товарищи!
Задумал клеточный автомат по типу "Жизнь" (см. вики).
Проще говоря есть поле, 200 на 200 клеток, в них постоянно меняются цвет клеток (в секунду как минимум 30 раз в 600та клетках из 40 000 происходят изменения), это около 18000 изменений пикселей в сек.
Так вот у меня есть массив $Color[x][y] где содержится инфа о об этих клетках, например $Color[x][y] = 0xffffffff.
ВОПРОС: как из выше указанного массива переносить в GUI эти изменения??
Пробовал через библиотеку _GDIPLUS, скорость обновления 200 клеток в секунду что в сотни раз меньше необходимой.
Так же пробовал через _WinAPI_SetPixel($dc, $i * 3 + 10, $i * 3 + 10, 0xFF0000), но показалось бесперспективным (если не так сообщите пожалуйста)
P.S. В обще в обычных фильмах и играх у меня скорость обновления экрана 1920х1080 60 кадров в сек, мои жалкие требуемые 18000 операций в сек не сравнены с 124 416 000 которые он делает в играх и фильмах :(
Задумал клеточный автомат по типу "Жизнь" (см. вики).
Проще говоря есть поле, 200 на 200 клеток, в них постоянно меняются цвет клеток (в секунду как минимум 30 раз в 600та клетках из 40 000 происходят изменения), это около 18000 изменений пикселей в сек.
Так вот у меня есть массив $Color[x][y] где содержится инфа о об этих клетках, например $Color[x][y] = 0xffffffff.
ВОПРОС: как из выше указанного массива переносить в GUI эти изменения??
Пробовал через библиотеку _GDIPLUS, скорость обновления 200 клеток в секунду что в сотни раз меньше необходимой.
Код:
Func Graphics_box ($Graphics_box_X = 0, $Graphics_box_Y = 0, $Graphics_box_W = 0, _
$Graphics_box_H = 0, $Graphics_box_color = 0) ; создание прямоугольника
; X координата начала, Y координата начала, ширина прямоугольника, высота прямоугольника, цвет прямоугольника.
Local $hGraphic, $hBrush
_GDIPlus_Startup ()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($ID_win_1)
$hBrush =_GDIPlus_BrushCreateSolid('0x' & $Graphics_box_color); ff - максимальная не прозрачность
_GDIPlus_GraphicsFillRect($hGraphic, $Graphics_box_X, $Graphics_box_Y, $Graphics_box_W, $Graphics_box_H, $hBrush)
; Очищает ресурсы
_GDIPlus_GraphicsDispose ($hGraphic)
_GDIPlus_BrushDispose ($hBrush)
_GDIPlus_Shutdown ()
EndFunc
Так же пробовал через _WinAPI_SetPixel($dc, $i * 3 + 10, $i * 3 + 10, 0xFF0000), но показалось бесперспективным (если не так сообщите пожалуйста)
P.S. В обще в обычных фильмах и играх у меня скорость обновления экрана 1920х1080 60 кадров в сек, мои жалкие требуемые 18000 операций в сек не сравнены с 124 416 000 которые он делает в играх и фильмах :(