[opengl]textur zeichnen

Sp3iky

Grünschnabel
hi!
bin derzeit mit einem forschungsprojekt an der uni beschäftigt, bei dem ich in einem anderen programm 2 bilder rendere und diese dann in einem byte array zum open gl programm schicken um sie zu zeichnen.

das ganze benutzt stereo quad buffering , das ist aber nicht das problem.

kenne mich leider noch gar nicht mit opengl aus und habe im moment auch nicht die zeit mich groß einzuarbeiten.

habe also ein byte array vorliegen, in dem beide bilder hintereinander gespeichert sind in der form rgba je ein byte pro kanal.

das ganze möchte ich nun in open gl darstellen.

habe zu testzwecken erstmal ein array selbst erstellt und mit einem farbwert gefüllt. müsste ja das gleiche ergebnis bringen, erstmal ein einfarbiges bild.

hier der code:

erstmal das byte array erstellen -> elementgröße ist 512*512*4

Code:
GLbyte *stream = new GLbyte[1048576];

	for (int i = 0; i != 1048576; i++)
	{
		stream[i] = 100;
	}

mit dieser funktion erstell ich daraus eine textur:

Code:
GLuint g_texPicture;

GLuint *LoadTexture(GLbyte stream)
{
	GLuint *texture;
	/* Erstelle eine OpenGL-Textur */
	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);	
	glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGBA,
	GL_UNSIGNED_BYTE, &stream);

	return texture;
}

g_texPicture = LoadTexture(stream);

und zeichnen tu ich sie so:

Code:
void displayFunc(void) {

	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0, 800, 600, 0, -1.0, 1.0);

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, g_texPicture);

	glBegin (GL_QUADS);
	glTexCoord2f (0, 0);
	glVertex2f	 (50, 50);

	glTexCoord2f (1, 0);
	glVertex2f	 (690, 50);

	glTexCoord2f (1, 1);
	glVertex2f	 (690, 530);

	glTexCoord2f (0, 1);
	glVertex2f	 (50, 530);

	glDisable (GL_TEXTURE_2D);
	glEnd ();

	glFlush ();

	countFrames();

	glutSwapBuffers();

dennoch wird das quad immer weiß angezeigt, auch unabhängig davon ob ich die elemente im array anders belege oder die textur gar nicht zeichne(dann wirds ja eh weiß angezeigt)

hoffe ihr könnt mir helfen

gruß Sp3iky
 
Zurück