OGL und Texturen
-
Hallo!
Ich hab das NeHe-Tut über Texturen gelesen, aber irgendwie funzen die nich so, wie ich will, wenn ichs selber schreibe...
// init: glGenTextures(1, &g_StomachTex); e = glGetError(); glBindTexture(GL_TEXTURE_2D, g_StomachTex); e = glGetError(); // e ist immer 0, alöso kein fehler AUX_RGBImageRec* rec = auxDIBImageLoad("anis.bmp"); glTexImage2D(GL_TEXTURE_2D, 0, 3, rec->sizeX, rec->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, rec->data); // e = glGetError(); free(rec->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // Linear Filtering e = glGetError(); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // Linear Filtering e = glGetError(); // Render: glBindTexture(GL_TEXTURE_2D, g_StomachTex); GLenum e = glGetError(); glBegin(GL_QUADS); glColor3f(255, 0, 0); glTexCoord2f(0.0f, 0.0f); glVertex2d(10, 10); glTexCoord2f(1.0f, 0.0f); glVertex2d(500, 10); glTexCoord2f(1.0f, 1.0f); glVertex2d(500, 400); glTexCoord2f(0.0f, 1.0f); glVertex2d(10, 400); glEnd();Ich sehe nur ein rotes Rechteck, aber von der Textur ist nichts zu erkennen.
Woran liegt das?
Ich hab eine orthogonale Matrix eingestellt, damit ich 2D-zeichnen kann.Ausserdem hab ich noch ne Frage bezueglich Texturen.
-
Wie kann ich die selber laden, also in welchem Format muss man die an ogl übergeben? Ich hab zZ ne Klasse cImage die die daten spaltenweisse in der struktur sColor{uchar r, uchar g, uchar b}; speichert, jede struktur für ein pixel.
Wie kann ich die in ogl laden? -
Wie kann ich mit ogl auf texturen rendern, also nicht auf den bildpuffer und wie kann ich die daten dann aus der textur auslesen? Oder anders: Wenn ich auf den backbuffer rendere, wie kann ich mit meinem Programm auf die Daten zugreifen, damit ich mit den sachen weitterrechnen kann, was ogl gemalt hat?
Gruß, Maxi
-
-
Maxi schrieb:
Hallo!
Ich sehe nur ein rotes Rechteck, aber von der Textur ist nichts zu erkennen.
Woran liegt das?glEnable (GL_TEXTURE_2D) ausgeführt?
Maxi schrieb:
- Wie kann ich die selber laden, also in welchem Format muss man die an ogl übergeben? Ich hab zZ ne Klasse cImage die die daten spaltenweisse in der struktur sColor{uchar r, uchar g, uchar b}; speichert, jede struktur für ein pixel.
Wie kann ich die in ogl laden?
Gar nicht

Für sowas nimmt man externe Bibliotheken. Mein Favourit: ClanLib. Gibt aber auch SDL, Allegro und Konsorten.Maxi schrieb:
- Wie kann ich mit ogl auf texturen rendern, also nicht auf den bildpuffer und wie kann ich die daten dann aus der textur auslesen? Oder anders: Wenn ich auf den backbuffer rendere, wie kann ich mit meinem Programm auf die Daten zugreifen, damit ich mit den sachen weitterrechnen kann, was ogl gemalt hat?
Google kennst du? Auf so ne Frage gibts keine Antwort

- Wie kann ich die selber laden, also in welchem Format muss man die an ogl übergeben? Ich hab zZ ne Klasse cImage die die daten spaltenweisse in der struktur sColor{uchar r, uchar g, uchar b}; speichert, jede struktur für ein pixel.
-
Maxi schrieb:
Wie kann ich die in ogl laden?
du musst die RGB-/RGBA-daten in einen interleaved-buffer schreiben (also normalerweise ein unsigned char-array der RGBRGBRGB etc enthält.)
den musst du dann an opengl übergeben, musst vorher noch GL_RGB einstellen. wie das genau geht siehste in den NeHe texturing tuts.
Maxi schrieb:
- Wie kann ich mit ogl auf texturen rendern, also nicht auf den bildpuffer und wie kann ich die daten dann aus der textur auslesen? Oder anders: Wenn ich auf den backbuffer rendere, wie kann ich mit meinem Programm auf die Daten zugreifen, damit ich mit den sachen weitterrechnen kann, was ogl gemalt hat?
also das kommt darauf an was du damit tun willst. das verstehe ich nicht ganz. wenn du nur auf ne textur rendern willst und die dann anzeigen willst, dann schauste auch mal in den NeHe-tuts. in dem radial blur dingens steht wie man das macht. wenn du aber an die daten selber rankommen willst, um sie z.b. als BMP zu dumpen, dann hab ich keine ahnung.
und ich glaube es gibt auch irgendwo ne RenderToTexture-extension.... musste auf opengl.org gucken.
-
Maxi schrieb:
- Wie kann ich die selber laden, also in welchem Format muss man die an ogl übergeben? Ich hab zZ ne Klasse cImage die die daten spaltenweisse in der struktur sColor{uchar r, uchar g, uchar b}; speichert, jede struktur für ein pixel.
Wie kann ich die in ogl laden?
Na so wie Du es hier auch schon gemacht hast:
Maxi schrieb:
glTexImage2D(GL_TEXTURE_2D, 0, 3, rec->sizeX, rec->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, rec->data);GL_RGB bedeutet die Farben kommen R G B R G B R ... rein
GL_UNSIGNED_BYTE sie kommen als vorzeichenloses Byte pro Farbe (8 Bit)
rec->data sind halt die Daten
- Wie kann ich die selber laden, also in welchem Format muss man die an ogl übergeben? Ich hab zZ ne Klasse cImage die die daten spaltenweisse in der struktur sColor{uchar r, uchar g, uchar b}; speichert, jede struktur für ein pixel.
-
glEnable(GL_TEXTURE_2D) hat gefehlt
*selbsthau*
Das selber laden von Texturen hab ich auch hinbekommen.
Mit dem Rendern auf Texturen beschäftige ich mich dann nachher
-
Das mit dem RenderToTexture klappt jetzt ganz gut, also ich hab dann die Textur mit den Daten, die ich will. (jedenfalls kann ich sie darstellen)
Jetzt muss ich aber noch die Daten aus der Textur holen, also ich will an die einzelnen Bytes in der Textur rankommen. Wie komme ich mit ogl oder anderen mitteln denn jetzt an die Daten (also die einzelnen pixel-farben) in der Textur ran, um mit denen weiterarbeiten zu können. (Das ganze wird kein Spiel, also auf Performane muss nich so wert gelegt werden
)