Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.08.2010, 15:17

Textur -> TGA

Hi,

ich bräuchte eine lib, die eine OGL-Textur in ein TGA-file schreibt oder notfalls kann ich mir es auch selbst schreiben, wenn ich wüsste, wie es geht. Kennt da jemand entsprechende Quellen?

2

16.08.2010, 15:34

Google hilft.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

16.08.2010, 15:54

An
Google hilft.

Clevere Antwort, die kann man hier auf fast jedes Thema geben...
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

16.08.2010, 17:52

Ich glaub DevIL kann das
Link

5

21.08.2010, 12:40

Ich habe noch eine kleinere Bibliothek gefunden, sodass ich die nur die eine benötigte Funktion übernehmen konnte. Ich habe jetzt aber das Problem, dass glGetTexImage immer 0 in das outputImage ausliest. Hat jemand eine Idee woran das liegen kann? Ich bin langsam etwas ratlos. Zum Vergleich noch meine PNG-Extraktions-Funktion, die einwandfrei funktioniert.

C-/C++-Quelltext

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
void ParallaxTest::SaveTextureToTGA(GLuint texture, char *filename)
{
glBindTexture(GL_TEXTURE_2D, texture);

int width, height, format;
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_WIDTH,&width);
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_HEIGHT,&height);
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_INTERNAL_FORMAT,&format);

unsigned char *outputImage = 0;

// Allocate the neccessary memory.
outputImage = (unsigned char*)malloc(width * height * 3);

// Clear the variable.
memset(outputImage, 0, width * height * 3);

glGetTexImage(GL_TEXTURE_2D, 0, format, GL_UNSIGNED_BYTE, outputImage);

// Call our WriteTGA() function to write the tga.
WriteTGA(filename, width, height, (unsigned char*)outputImage);

// Clear the allocated memory.
free(outputImage);
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void ParallaxTest::SaveTextureToPNG(GLuint texture, std::string Filename)
{
glBindTexture(GL_TEXTURE_2D, texture);

int textureWidth, textureHeight, textureInternalFormat;
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_WIDTH,&textureWidth);
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_HEIGHT,&textureHeight);
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_INTERNAL_FORMAT,&textureInternalFormat);

std::vector<unsigned char> TexData, PngData;

int Pack;
glGetIntegerv(GL_PACK_ALIGNMENT, &Pack);
TexData.resize(textureWidth*textureHeight*4);

glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, &TexData[0]);

LodePNG::Encoder encoder;
encoder.encode(PngData, TexData, textureHeight, textureWidth);
LodePNG::saveFile(PngData, Filename);
}

Werbeanzeige