Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » RGB -> RGBA

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.04.2006, 20:13 Uhr
A-l-e-x



Ich hab bis jetzt so meine Texturen convertiert:


C++:
int imageSize_RGB  = Height* Width * 3;
int imageSize_RGBA = Height* Width * 4;

// Speicherplatz anlegen
pImage_RGBA = new unsigned char[imageSize_RGBA];

// unsigned char *pImage_RGB // das alte

// Transparenz-schleife
int i, j;

// colorkey
int r = 0, g = 0, b = 0; // <-Beispiel

for( i = 0, j = 0; i < imageSize_RGB; i += 3, j += 4 )
{
    // transparentes Pixel?
    if( pImage_RGB[i]   == r &&
    pImage_RGB[i+1] == g &&
    pImage_RGB[i+2] == b )
    {
        pImage_RGBA[j+3] = 0;   // "unsichtbar"
    }
    else
    {
        pImage_RGBA[j+3] = 255; // "sichtbar"
    }
            
        pImage_RGBA[j]   = pImage_RGB[i];
        pImage_RGBA[j+1] = pImage_RGB[i+1];
        pImage_RGBA[j+2] = pImage_RGB[i+2];
}
        
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

// Transparentes Bild erzeugen
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, Width, Height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pImage_RGBA);

// ich hoffe ich habe das Wichtigste aufgeführt



Jedenfalls wird das Bild bei mir geglättet. Wie kann ich das glätten verhindern?

Hab schon mit der Funktion glTexImage2D() experementiert. Da wird zwar nicht gelättet, doch bekomme ich, mit meinem jetztigen Code, Probleme mit der richtigen Darstellung.

C++:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Width, Height, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pImage_RGBA);


Was mache ich da falsch?

mfg A-l-e-x

Dieser Post wurde am 05.04.2006 um 20:16 Uhr von A-l-e-x editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.04.2006, 20:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);




jeweils auf GL_MIPMAP stellen, dann glättet er nich
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.04.2006, 22:07 Uhr
A-l-e-x



Äh, meinst du etwa: GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR und GL_LINEAR_MIPMAP_LINEAR?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.04.2006, 22:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


probier einfach durch, LINEAR ist immer "interpolation", NEAREST eben nicht, ich meinte afaik GL_NEAREST
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.04.2006, 08:11 Uhr
A-l-e-x



Hab alles schon ausprobiert, jedoch klappt das auch nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.04.2006, 08:22 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


was meinst du eigentlich mit

"Da wird zwar nicht gelättet, doch bekomme ich, mit meinem jetztigen Code, Probleme mit der richtigen Darstellung."

die "filter" einstellungen da gelten imho nur für glTexImage2D, nicht für die glu-funktionen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.04.2006, 22:13 Uhr
A-l-e-x




Zitat von FloSoft:
was meinst du eigentlich mit

"Da wird zwar nicht gelättet, doch bekomme ich, mit meinem jetztigen Code, Probleme mit der richtigen Darstellung."


Naja, bei glTexCoord() wurden die Texturkoordinaten (bei einigen Texturen) nicht richtig intepretiert.

Jedenfalls hab ich jetzt eine Lösung gefunden:

C++:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); // <--
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); // <--
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Width, Height, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pImage_RGBA);



Danke für die Denkanstösse.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.04.2006, 22:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ok gut

achja, weil ich ein

pImage_RGBA = new unsigned char[imageSize_RGBA];

sehe und kein zugehöriges delete, nach glTexImage kannste die Imagedaten im speicher freigeben, OpenGL kopiert das in den Grafikram bzw wenn dort kein platz mehr ist in systemram
--
class God : public ChuckNorris { };

Dieser Post wurde am 06.04.2006 um 22:26 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.04.2006, 16:00 Uhr
A-l-e-x



^^ Tja:


Zitat von A-l-e-x:


C++:
// ich hoffe ich habe das Wichtigste aufgeführt




Keine Sorge ich hab das etwas später. Hab einfach vergessen es hier aufzuführen:


C++:
if(pImage_RGBA)
    delete [] pImage_RGBA;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: