LINUX.ORG.RU

Неправильное поведение sdl2.SDL_RenderDrawPoints ?

 ,


0

1

scaledT — Numpy-массив 2-мерных координат, размер 143x2. Можно отрисовывать каждую пару вызовом sdl2.SDL_RenderDrawPoint, можно нарисовать сразу весь массив командой
sdl2.SDL_RenderDrawPoints(renderer, self.scaledT.ctypes.data_as(ctypes.POINTER(sdl2.SDL_Point)), len(self.scaledT))

Но первое работает одинаково и под Линуксом, и под Виндоуз, а второе под Линуксом даёт неверный результат — все точки рисуются на строке с y=0.

В чём может быть проблема?

★★★★★

Последнее исправление: question4 (всего исправлений: 1)

Подсказали на #python@libera.chat:

Рисуемый массив получается так: scaledT = (... длинные вычисления ...).round().astype(int)

Как выяснилось, под Линуксом это даёт int64, а под Windows 10 — int32. 64-битной libSDL нужны int32.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Ну тип того, у сдл2 везде где только можно 32 битка явная.

В том числе все float тоже оказались 32-битными.

А ты чего химичишь то? Просто эксперименты или задумка какая-то?

Эксперименты для самообразования. Вот, вчера ctypes пользоваться научился, сегодня про 32 бита в SDL узнал.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.