Seite 2 von 2

Re: TGALoader für OpenGL

Verfasst: Mi Jan 26, 2011 4:39 pm
von paparoach777
klar hab ich schon gemacht.

wobei...
Bevor oder nachdem man die texture geladen hat ???

Re: TGALoader für OpenGL

Verfasst: Mi Jan 26, 2011 4:52 pm
von Xin
paparoach777 hat geschrieben:klar hab ich schon gemacht.

wobei...
Bevor oder nachdem man die texture geladen hat ???
Vor dem Zeichnen.

Ich kenne Deinen Quelltext nicht und der vorherige hatte wohl noch nichts mit Texturen zu tun.
Es ist nur der übliche Fehler, irgendetwas nicht zu "enable"'n ^^

Re: TGALoader für OpenGL

Verfasst: Mi Jan 26, 2011 5:46 pm
von paparoach777
das vor dem zeichnen war mir schon klar...

Ich meinte vor dem Laden oder danach ( in meinem Code also vor oder nach LoadTGA )

Re: TGALoader für OpenGL

Verfasst: Do Jan 27, 2011 4:09 pm
von Kerli
paparoach777 hat geschrieben: Ich meinte vor dem Laden oder danach ( in meinem Code also vor oder nach LoadTGA )
Das ist eigentlich egal, da OpenGL ja nichts anderes als eine große Statemachine ist. Solange du es nicht änderst, bleibt es immer gleich. Einen Einfluss hat es erst beim Rendern. Es sollte also irgendwann vor dem Rendern aktiviert werden.
paparoach777 hat geschrieben:Aber auf dem Bildschirm ist nur ein schwarzes Quadrat...
Welche Farbe sollte es denn haben? Ist das genau die Farbe die du mit glColor angegeben hast? Bist du sicher das der TGA Loader funktioniert - also dass die Daten genau in dem Format vorliegen das du bei glTexImage angibst?

Re: TGALoader für OpenGL

Verfasst: Fr Jan 28, 2011 11:38 pm
von paparoach777
Also...

Die Farbe war standart weiss (hab ich überprüft).

Und das war ja eigentlich ein Projekt um zu gucken ob der TGALoader überhaupt funktioniert, also könnts daran liegen...

Hier der TGALoader SourceCode

Code: Alles auswählen

#include<stdio.h>
#include<stdlib.h>
#include"GLheaders.h"


typedef struct{
	char IDsize;
	char colormaptype;
	char imagetype;
	unsigned short colormapstart;
	unsigned short colormaplength;
	unsigned char colormapbits;
	unsigned short xstart;
	unsigned short ystart;
	unsigned short width;
	unsigned short height;
	char bpp;
	char descriptor;
}TGA_HEADER;


GLbyte* LoadTGA(const char *szFileName, GLint *iWidth, GLint *iHeight, GLint *iComponents, GLenum *eFormat){
	
	FILE *data;
	TGA_HEADER header;
	unsigned long imageSize;
	short depth;
	GLbyte *pbits;
	
	//default
	*iWidth = 0;
    *iHeight = 0;
    *eFormat = GL_BGR_EXT;
    *iComponents = GL_RGB8;
	
	data = fopen(szFileName, "rb");
	
	if(data == NULL){
		return NULL;
	}
	
	fread(&header, 18, 1, data);
	
	*iWidth = header.width;
	*iHeight = header.height;
	depth = header.bpp / 8;
	
	if(header.bpp != 8 && header.bpp != 24 && header.bpp != 32){
		return NULL;
	}
	
	imageSize = header.width * header.height * header.bpp;
	
	pbits = (GLbyte*)malloc(imageSize * sizeof(GLbyte));
	
	if(pbits == NULL){
		return NULL;
	}
	
	if(fread(pbits, imageSize, 1, data) != 1)
		{
        free(pbits);
        return NULL;
		}
	
	switch(depth)
		{
        case 3:     // Most likely case
            *eFormat = GL_BGR_EXT;
            *iComponents = GL_RGB8;
            break;
        case 4:
            *eFormat = GL_BGRA_EXT;
            *iComponents = GL_RGBA8;
            break;
        case 1:
            *eFormat = GL_LUMINANCE;
            *iComponents = GL_LUMINANCE8;
            break;
		};
		
		fclose(data);
		
		return pbits;
}


Re: TGALoader für OpenGL

Verfasst: Sa Jan 29, 2011 3:48 pm
von Kerli
Du kannst ja einmal ein paar Debugausgaben machen und somit einmal schauen ob zum Beispiel sinnvolle Werte für die Größe, Farbtiefe etc. ausgelesen werden. Ansonsten wenn du ein Komplettes Pakete zusammenstellst, am Besten mit Makefile, dann kann ich mir das einmal kurz anschauen.