Mengonversi gambar menjadi pixmap menggunakan perpustakaan ImageMagic

Tugas saya adalah membuat "gambar dibaca ke dalam pixmaps yang kemudian akan Anda ubah menjadi peta tekstur". Jadi untuk bagian pixmap saja, dengarkan saya dan beri tahu saya apakah saya punya ide yang tepat dan apakah ada cara yang lebih mudah. Dokumen perpustakaan yang saya gunakan: http://www.imagemagick.org/Magick++/Documentation.html

Baca di gambar:

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

Saya pikir ini adalah pixmap yang saya perlukan untuk membaca 'gambar':

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

Jadi saya rasa saya memerlukan loop yang, untuk setiap indeks piksel 'pixmap', memberikan nilai R,G,B dari indeks piksel 'gambar' yang sesuai. Saya pikir badan loopnya seperti ini:

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);

Tapi menurut saya fungsi di atas mengembalikan Quantums di mana saya memerlukan GLubytes, jadi adakah yang bisa menawarkan bantuan di sini?

-- OR --

Mungkin saya bisa menangani pixmap dan peta tekstur dengan menggunakan OpenIL (dokumen di sini: http://openil.sourceforge.net/tuts/tut_10/index.htm). Menurutmu saya bisa menyebutnya secara berurutan?

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

person Rooster    schedule 30.11.2011    source sumber


Jawaban (1)


Anda dapat menyalin nilai kuantum yang dikembalikan oleh pixelColor(x,y) ke ColorRGB dan Anda akan mendapatkan nilai warna yang dinormalisasi (0,0,1,0).

Jika Anda tidak ingin menggunakan Magick++ mungkin Anda dapat mencoba OpenIL, yang dapat memuat dan mengonversi gambar Anda menjadi Peta tekstur OpenGL tanpa terlalu banyak kerumitan.

person tbalazs    schedule 30.11.2011
comment
Sebenarnya OpenIL memang terlihat cukup sederhana. Silakan lihat hasil edit saya di atas. Apakah hanya itu yang akan Anda telepon? Saya akan mencobanya; jika berhasil, jawaban ini mendapat banyak perhatian. - person Rooster; 01.12.2011
comment
Panggil saja ilutOglLoadImage dengan nama file yang ingin Anda muat, dan itu akan memuat gambar langsung ke tekstur OpenGL, lalu hapus semua data lokal yang tidak diperlukan. (Dari manual OpenIL) GLuint yang dikembalikan adalah pegangan tekstur OpenGL. - person tbalazs; 01.12.2011
comment
Apakah ada hal lain selain ilut.h yang harus saya #sertakan? Karena ilutRenderer(ILUT_OPENGL) berfungsi, tetapi iluOglLoadImage tidak dideklarasikan dalam cakupan ini - person Rooster; 01.12.2011
comment
Fungsi memuat gambar yang tepat adalah GLuint ilutGLLoadImage(ILstring FileName), menurut saya ada kesalahan ketik pada tutorialnya. - person tbalazs; 01.12.2011
comment
Anda memang benar. Sayangnya saya harus terus mengajukan pertanyaan kepada Anda :) Jika Anda dapat menawarkan bantuan mengenai kesalahan segmentasi saya dengan fungsi ini, silakan lihat stackoverflow.com/ q/8351115/1042847. Terima kasih. - person Rooster; 02.12.2011