Библиотека манипулирования пикселями Python - PullRequest
2 голосов
/ 14 апреля 2010

Итак, я прохожу начальные этапы создания игры на Python и ищу библиотеку, которая способна манипулировать пикселями и относительно быстро их обрабатывать.

Моей первой мыслью была pygame, поскольку она имеет дело с чистыми 2D-поверхностями, но она позволяет только пиксельный доступ через pygame.get_at(), pygame.set_at() и pygame.get_buffer(), каждый из которых блокирует поверхность при каждом вызове, их медленно использовать. Я также могу использовать классы PixelArray и surfarray, но они заблокированы на время жизни, и единственный способ скрыть их от поверхности - это скопировать пиксели на новую поверхность или использовать * 1008. *, что требует создания подповерхности экрана и приведения его в соответствие с этим, если массив меньше экрана (если он больше, я могу просто использовать часть массива, что не проблема).

У меня нет большого опыта работы с PyOpenGL или Pyglet, но мне интересно, есть ли более быстрая библиотека для манипулирования пикселями или есть более быстрый метод в Pygame для выполнения манипуляции с пикселями. Я немного поработал с SDL и OpenGL в C, и мне нравится идея добавления вершинных / фрагментных шейдеров в мою программу.

Моя программа будет в основном заниматься загрузкой изображений и записью / чтением с поверхностей.

Ответы [ 3 ]

2 голосов
/ 14 апреля 2010

Вы пробовали Библиотека изображений Python ? Вам все равно придется передавать данные обратно в pygame через frombuffer или что-то еще, чтобы сделать блиц, но PIL может обработать пиксельный доступ.

0 голосов
/ 05 февраля 2014

Проверка Привязки Python из Простая и быстрая мультимедийная библиотека . Из документации :


Он реализует те же 2D-чертежи и функции, связанные с OpenGL (см. Их базовый класс sf :: RenderTarget для более подробной информации), разница в том, что результат сохраняется в текстуре вне экрана, а не показ в окне.

Рендеринг на текстуру может быть полезен в различных ситуациях:

  • предварительный расчет сложной статической текстуры (например, фона уровня из нескольких плиток)
  • применение постэффектов ко всей сцене с помощью шейдеров
  • создание спрайта из трехмерного объекта, визуализированного с OpenGL
  • и т.д.

Проверьте также методы содержит и пересекаются из sf :: Rect Шаблон класса .

0 голосов
/ 14 апреля 2010

Я проверил pyglet и увидел, что он хорошо работает для статического столкновения на пиксель, когда изображение не слишком сильно манипулируется; Однако я не уверен, насколько хорошо он работает с динамическим изображением.

Короче, я ищу библиотеку, которая способна быстро отображать буфер пикселей. Этот буфер будет постоянно меняться, поэтому необходим быстрый доступ и перехват. Это можно сделать в C относительно легко, используя SDL; Тем не менее, я ищу аналогичный метод в Python. Я даже не слишком беспокоюсь об аппаратном ускорении в этот момент, хотя это было бы неплохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...