Milan Mimica
Member #3,877
September 2003
|
How do I display a texture with inverted colors with OpenGL? Here is the code I tried to use: 1 | #include <allegro.h> | 2 | #include <alleggl.h> | 3 | | 4 | int main() | 5 | { | 6 | allegro_init(); | 7 | install_allegro_gl(); | 8 | install_keyboard(); | 9 | install_timer(); | 10 | | 11 | allegro_gl_set(AGL_COLOR_DEPTH, 16); | 12 | allegro_gl_set(AGL_DOUBLEBUFFER, 1); | 13 | allegro_gl_set(AGL_RENDERMETHOD, 1); | 14 | allegro_gl_set(AGL_SUGGEST, AGL_COLOR_DEPTH | AGL_DOUBLEBUFFER | AGL_RENDERMETHOD); | 15 | | 16 | if (set_gfx_mode(GFX_OPENGL_WINDOWED, 640, 480, 0, 0)) | 17 | return 1; | 18 | allegro_gl_set_allegro_mode(); | 19 | | 20 | BITMAP *bmp = load_bitmap("mysha.pcx", NULL); | 21 | | 22 | GLint tex = allegro_gl_make_texture_ex(AGL_TEXTURE_RESCALE, bmp, GL_RGB8); | 23 | glBindTexture(GL_TEXTURE_2D, tex); | 24 | glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_ZERO); | 25 | glEnable(GL_BLEND); | 26 | glBegin(GL_QUADS); | 27 | glTexCoord2f(0, 0); | 28 | glVertex2f(0, 0); | 29 | glTexCoord2f(1, 0); | 30 | glVertex2f(bmp->w, 0); | 31 | glTexCoord2f(1, 1); | 32 | glVertex2f(bmp->w, bmp->h); | 33 | glTexCoord2f(0, 1); | 34 | glVertex2f(0, bmp->h); | 35 | glEnd(); | 36 | glDisable(GL_BLEND); | 37 | | 38 | allegro_gl_flip(); | 39 | readkey(); | 40 | | 41 | destroy_bitmap(bmp); | 42 | | 43 | return 0; | 44 | } |
Attached is mysha.pcx - the example input file. As a result I get something similar to a inverted picture, but it's obviously different to what any image editor would give me. What I'm I doing wrong? EDIT: Fixed using: glEnable(GL_COLOR_LOGIC_OP); glLogicOp(GL_COPY_INVERTED); without blending.
|