Как делать массивы numpy понятными другим библиотекам?
Пример. Есть функция https://wiki.libsdl.org/SDL_RenderDrawPoints:
int SDL_RenderDrawPoints( SDL_Renderer * renderer, const SDL_Point * points, int count )
где SDL_Point — структура из 2 целых: https://wiki.libsdl.org/SDL_Point:
typedef struct SDL_Point { int x; int y; } SDL_Point;
Разумеется, всё это обёрнуто в Питон, то есть sdl2.SDL_RenderDrawPoints()
и sdl2.SDL_Point()
.
Если просто вызывать SDL_RenderDrawPoints, ставя вторым аргументом numpy.array целых чисел, конечно, будет ошибка о неправильном типе: «ctypes.ArgumentError: argument 2: <class ‘TypeError’>: expected LP_SDL_Point instance instead of numpy.ndarray». Я пробовал экспериментировать с numpy.array.ctypes.data_as(), но не нашёл подходящий тип. Она хочет именно LP_SDL_Point.
Как показать ей, что массив является набором структур SDL_Points? В SDL имеются преобразования массивов точек в массивы numpy, но обратного преобразования я не нашёл.