glTexImage2D Problem



  • Also die Datei geöffnet habe ich mit

    fstream pic;
    pic.open("testdatei");
    GLvoid * data = pic
    

    Dieser Code kann aber nicht einfach so alleine am Anfang des Projekts stehen, also habe ich ihn in LoadGLTextures() geschrieben. Da sind die die Variablen aber alle Lokal und bringen mir nichts. Wenn ich es in DrawGLScene() schreibe, muss ich erstens alle Dateinamen doppelt schreiben und funktionieren tut es auch nicht, wenn ich data dann als Parameter übergebe. Nach Buffer habe ich auch mal gegooglet und "streambuf" gefunden. Allerdings weiß ich nicht so rechts was ich damit anfangen soll, und aus dem Internet werde ich auch nicht schlau.



  • Der Buffer der gesucht wird ist ein einfaches Array, mit höhe*breite Einträgen, so dass jeder Eintrag einem Pixel entspricht und dessen Farbe enthält. Wenn du eine Bilddatei lesen willst musst du entsprechend des Formates versuchen an die ganzen Pixeldaten zu kommen. Das sollte der TGALoader machen aus dem Tutorial.



  • Ich habe gerade nochmal geguckt und das alles muss doch in texture[x].imageData sein. DOch genau das funktioniert nicht...



  • Sorry wegen Doppelpost aber hat keiner eine Lösung?
    Irgendwie muss man das Filtern ja hinbekommen...



  • Filtern?



  • Im NeHe Tutorial wird diese Funktion im zusammenhang mit dem Filtern erklärt..



  • Ja weil du beim Rendern Texturfilter verwendest, mit dem Laden der Textur und damit deinem Problem hat das aber nix zu tun...



  • Ok, ist das geklärt.
    Aber dennoch weiß ich immer noch nicht was ich falsch mache, bzw. was man anders machen muss, damit auch alle so läuft wie es soll. Aus google werde ich einfach nicht schlau.



  • Dann solltest du vielleicht von OpenGL noch etwas Abstand nehmen und erstmal die Grundlagen von C++ lernen...



  • Dem muss ich zustimmen.



  • Die Grundlagen kann ich schon lange...
    Wenn ich mich selbst daran versuche, kommt jedoch genau das selbe raus, wie es der TGALoader mit Texture.imageData tut.
    Hier nochmal der kurze Codeabschnitt:

    tga.bytesPerPixel	= (tga.Bpp / 8);
    tga.imageSize		= (tga.bytesPerPixel * tga.Width * tga.Height);
    texture->imageData	= (GLubyte *)malloc(tga.imageSize);
    


  • openglnoob schrieb:

    Also die Datei geöffnet habe ich mit

    fstream pic;
    pic.open("testdatei");
    GLvoid * data = pic
    

    Du rufst hier den Konvertierungsoperator operator void* auf. Der ist nur dazu gedacht, if (pic) schreiben zu können, aber sicher nicht, um an die Daten zu gelangen.

    Vielleicht solltest du auch binär lesen (mit std::ios::binary ). Die Kenntnis der Standardbibliothek würde ich übrigens auch zu den Grundlagen zählen...



  • Vorher habe ich immer die Bibliothek <stdio.h> und nicht <fstream> benutzt.
    Aber hat eigentlich einer von euch mal das Tutorial angeguckt. Da wird das alles schon erledigt. Zwar nicht im TGALoader aber im Hauptcode bei LoadGLTextures()...
    Darauf habe ich dummerweise nicht geachtet. Von daher gabs eigentlich nie ein Problem...


Anmelden zum Antworten