.[ ČeskéHry.cz ].
SDL_image, OpenGL, PNG a priehľadnosť

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
niXon



Založen: 27. 10. 2007
Příspěvky: 22

PříspěvekZaslal: 27. říjen 2007, 09:11:41    Předmět: SDL_image, OpenGL, PNG a priehľadnosť Odpovědět s citátem

Zdravím, mám takýto problém. Snažím sa pomocou OpenGL a SDL_image načítať PNG obrázok s priehľadnosťou. (mimochodom, jazyk C++). Obrázok sa načíta v poriadku (teda aspoň to tak vyzerá), a zobrazí sa, no pravdepodobne buď je chyba v nesprávnom alfa kanáli obrázku alebo v mojom kóde, a na to potrebujem prísť, kde je chyba. Tu je úryvok z môjho kódu:

kód:
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

   glDisable(GL_TEXTURE_2D);
   glDisable(GL_BLEND);

   glColor3f(0, 0, 1);
       glBegin(GL_QUADS);

      glVertex3f(-1, -1, -4);
      glVertex3f(-1, 1, -4);
      glVertex3f(1, 1, -4);
      glVertex3f(1, -1, -4);
   
       glEnd();

   glColor3f(1, 1, 1);

   glEnable(GL_TEXTURE_2D);
   glBindTexture(GL_TEXTURE_2D, texture);
   glEnable(GL_BLEND);
   glBlendFunc(GL_SRC_ALPHA,GL_ONE);

   glPushMatrix();
      glRotatef(i, 0, 0, 1);
      glBegin(GL_QUADS);
   
         glTexCoord2f(0.0, 0.0); glVertex3f(-1, -1, -2);
         glTexCoord2f(1.0, 0.0); glVertex3f(-1, 1, -2);
         glTexCoord2f(1.0, 1.0); glVertex3f(1, 1, -2);
         glTexCoord2f(0.0, 1.0); glVertex3f(1, -1, -2);
   
      glEnd();
   glPopMatrix();

tento kód sa vykoná každým obrázkom (framom), v premennej "texture" je odkaz na PNG priehľadnú textúru, a výsledok vyzerá tak, že vidím priehľadné PNG, lenže je priehľadné aj tam kde nemá byť, napríklad v strede obrázku presvitá modrý štvorec, ktorým testujem priehľadnosť, a chcel by som dosiahnuť, aby bol vidieť len okolo obrázku... neviete kde robím chybu ? mimochodom, na načítavanie obrázku používam tento kód: http://www.nehe.ceske-hry.cz/cl_sdl_picture.php a na priehľadnosť používam GIMP (pod ubuntu). Priložil som aj screenshot, aby ste videli ako to vyzerá. Štvorec je vykreslený v pozadí (namodro) a ikonka VLC v popredí, ktorá by mala mať priehľadnosť. A ešte jedna vec, keď som to dal vykresliť v niekoľkých programoch, tak tie priehľadnosť berú do úvahy (firefox, gimp...).

Vopred ďakujem za Vašu pomoc.



VYRIEŠENÉ!!! Chybu som mal v nastavení blendingu, malo tam byť
kód:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna