1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
uchar* donnees = im->getDonneesPixels();
uchar image[im->getLargeur()][im->getHauteur()][3];
// TGA RLE 32
int i, size;
uint compte = 0;
uint lg = (im->getLargeur() * im->getHauteur());
while (compte < lg)
{
size = 1 + (donnees[0] & 0x7f);
if (donnees[0] & 0x80)
{
++donnees;
for (i = 0; i < size; ++i, ++compte)
{
image[compte % im->getLargeur()][compte / im->getLargeur()][0] = donnees[2];
image[compte % im->getLargeur()][compte / im->getLargeur()][1] = donnees[1];
image[compte % im->getLargeur()][compte / im->getLargeur()][2] = donnees[0];
//glColor3ub(donnees[2],donnees[1],donnees[0]); // trop lent
//glVertex2i(compte % im->getLargeur(),compte / im->getLargeur());
}
donnees+=4;
}
else
{
++donnees;
for (i = 0; i < size; ++i, ++compte)
{
image[compte % im->getLargeur()][compte / im->getLargeur()][0] = donnees[2];
image[compte % im->getLargeur()][compte / im->getLargeur()][1] = donnees[1];
image[compte % im->getLargeur()][compte / im->getLargeur()][2] = donnees[0];
//glColor3ub(donnees[2],donnees[1],donnees[0]); // trop lent
//glVertex2i(compte % im->getLargeur(),compte / im->getLargeur());
donnees+=4;
}
}
}
glBindTexture(GL_TEXTURE_2D,m_visualiseur.m_id_texture);
//glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
//glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,im->getLargeur(),im->getHauteur(),0,GL_RGB,GL_UNSIGNED_BYTE,image);
glClear (GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
//glNormal3f(1.0,0.0,0.0);
glTexCoord2f(0.,0.); glVertex2i( 0 , 0 );
glTexCoord2f(1.,0.); glVertex2i( im->getHauteur() , 0 );
glTexCoord2f(1.,1.); glVertex2i( im->getHauteur() , im->getLargeur() );
glTexCoord2f(0.,1.); glVertex2i( 0 , im->getLargeur() );
glEnd(); |
Partager