Преобразование изображения в растровое изображение с использованием библиотек ImageMagic

Мое задание - заставить «изображения считываться в пиксельные карты, которые вы затем конвертируете в карты текстур». Так что только для части растрового изображения, выслушайте меня и скажите, есть ли у меня правильная идея и есть ли более простой способ. Библиотечные документы, которые я использую: http://www.imagemagick.org/Magick++/Documentation.html < / а>

Читайте на картинке:

Image myimage;
myimage.read( "myimage.gif" );

Я думаю, что это растровое изображение, в которое мне нужно прочитать "изображение":

GLubyte pixmap[TextureSize][TextureSize][3];

Поэтому я думаю, что мне нужен цикл, который для каждого индекса пикселя «растрового изображения» присваивает значения R, G, B из соответствующих индексов пикселей «изображения». Я думаю, что тело цикла выглядит так:

pixmap[i][j][0] = myimage.pixelColor(i,j).redQuantum(void);
pixmap[i][j][1] = myimage.pixelColor(i,j).greenQuantum(void);
pixmap[i][j][2] = myimage.pixelColor(i,j).blueQuantum(void);

Но я думаю, что приведенные выше функции возвращают Quantum там, где мне нужны GLubytes, так может ли кто-нибудь предложить здесь помощь?

-- OR --

Возможно, я смогу позаботиться как о растровом изображении, так и о текстурной карте, используя OpenIL (документы здесь: http://openil.sourceforge.net/tuts/tut_10/index.htm). Думаете, я мог бы просто назвать их по порядку?

ilutOglLoadImage(char *FileName);
ilutOglBindTexImage(ILvoid);

person Rooster    schedule 30.11.2011    source источник


Ответы (1)


Вы можете скопировать квантовые значения, возвращаемые pixelColor(x,y), в ColorRGB, и вы получите нормализованные (0,0,1,0) значения цвета.

Если вам не нужно придерживаться Magick ++, возможно, вы можете попробовать OpenIL, который может загружать и преобразовывать ваше изображение в Карты текстур OpenGL без особых хлопот.

person tbalazs    schedule 30.11.2011
comment
На самом деле OpenIL выглядит довольно просто. Пожалуйста, взгляните на мою правку выше. Это все, что вы бы назвали? Я собираюсь попробовать; если это сработает, этот ответ получит большую жирную проверку. - person Rooster; 01.12.2011
comment
Просто вызовите ilutOglLoadImage с именем файла, который вы хотите загрузить, и он загрузит изображение прямо в текстуру OpenGL, а затем удалит все ненужные локальные данные. (Из руководства OpenIL) Возвращенный GLuint является дескриптором текстуры OpenGL. - person tbalazs; 01.12.2011
comment
Есть ли что-то еще, кроме ilut.h, которое я должен #include? Поскольку ilutRenderer (ILUT_OPENGL) работает, но iluOglLoadImage не был объявлен в этой области - person Rooster; 01.12.2011
comment
Правильная функция загрузки изображений - GLuint ilutGLLoadImage(ILstring FileName), я думаю, что в учебнике есть опечатка. - person tbalazs; 01.12.2011
comment
Вы действительно правы. К сожалению, я должен продолжать задавать вам вопросы :) Если вы можете предложить помощь с моей ошибкой сегментации с помощью этой функции, см. stackoverflow.com/ q / 8351115/1042847. Спасибо. - person Rooster; 02.12.2011