Андрей Светлов
Март 2, 2011 18:38:36
Честно сказать, все еще ничего не понял. Вы медленно и печально строите градиентную растяжку, через numpy а потом зачем-то грузите ее в текстуру.
Рисуете квадратик с этой тесктурой. Почему-то GL_LUMINANCE, что не характерно вообще-то.
Теперь, внимание, вопрос: а что требовалось-то и при чем здесь яркость?
Levelup
Март 2, 2011 19:32:32
Суть в том, что на входе имеется 16-битный двумерный массив в градациях серого, он может быть какой угодно. Мне необходимо менять яркость изображения, полученного из этого массива. Делаю это посредством opengl, чтобы добиться максимального fps. В качестве примера я взял градиент. Сначала я преобразовываю массив из 16-ти в 8-битный. Далее, как вы заметили, я делаю в opengl квадрат и накладываю на него текстуру в виде этого изображения. Теперь необходимо изменить яркость текстуры. Я так понимаю, что изображение в виде текстуры сначала загоняется в opengl, и только потом уже менятся посредством gpu. Таким образом это нужно делать не в OnPaint.
Андрей Светлов
Март 2, 2011 20:23:52
Максимальный fps? Вы серьезно?
А зачем тогда на каждую перерисовку создаете ваш градиент, а потом перегоняете его в видеопамять?
Преобразование 16бит->8бит я как-то проглядел…
Levelup
Март 2, 2011 22:07:08
Да, чтобы можно было менять параметры в реальном времени. В том то и дело, что необходимо сначала перегонять, а после уже преобразовывать. Действительно, не заметил, преобразование не включил..
Андрей Светлов
Март 2, 2011 22:41:06
Не совсем понял тогда, какие “параметры” собираетесь менять. И зачем вам вообще OpenGL?
Делайте коррекцию яркости для своего self._image средствами того же numpy. Вы и так очень хорошо проходитесь по вашей картинке, начиная с вычисления гистограммы. Еще одна операция ни на что уже не влияет, и незачем OpenGL городить.
Или я плохо понимаю, или вы не очень толково рассказываете.
Levelup
Март 3, 2011 00:10:25
Если менять яркость средствами numpy, для каждого пересчета потребуется много времени, так как изображения сами по себе очень большие. Рассчитывать гистограмму так же необходимо внутри OpenGL. Возможно ли загнать массив в OpenGL, а после применять numpy для рассчетов? Чтобы все это делал gpu.
Андрей Светлов
Март 3, 2011 00:52:16
Ааа. Это вы на PIL пытались рисовать?
Слушайте. Вы или приведете ваше техзадание без купюр, мешающих пониманию смысла - или гадайте уж сами.
Техзадания нет - так напишите для начала.
Крайне утомительно вытягивать из вас подробности.
Levelup
Март 3, 2011 06:35:42
В коде выше pil не используется. Это, в принципе, все что есть. Техническое задание уже тоже писал выше, грубо говоря, надо загнать массив в OpenGL и там его изменять..
Андрей Светлов
Март 3, 2011 09:01:19
Levelup
В коде выше pil не используется. Это, в принципе, все что есть. Техническое задание уже тоже писал выше, грубо говоря, надо загнать массив в OpenGL и там его изменять..
Ну тогда, в принципе, у вас практически все есть - берете массив, загоняеете и изменяеете. Грубо говоря, программа после таких адских манипуляций просто обязана заработать.
Levelup
Март 3, 2011 09:27:19
Я ещё больше запутался. Могу я с вами связаться по аське или скайпу? Постараюсь все заново подробно изложить..