Alphablending



  • Das ist doch ein einmaliger Vorgang, eine Textur zu laden. Da gibt es IMO keinen Grund, mit der Zeit rumzugeizen.
    Wenn du deine Textur aus einer Datei laden kannst, dann tu es doch, das ist der übliche Weg. Ich verstehe außerdem nicht, warum du das Bild zur Laufzeit erzeugst. 😕



  • Ich erzeuge mein Bild zur Laufzeit, weil sich mein Bild ändert ich ich zuvor nicht weiss wie es aussieht. Bin auch mit der Textur nicht allzu glücklich weil ich eben immer wieder ein neues Bild haben will. Weiss aber keine andere Möglichkeit ein Bild in OpenGL zu bringen. Wenn also jemand ne andre möglichkeit weiss bin ich sehr dankbar.



  • Quotenmausi schrieb:

    image1 = bmp;
    if (image1 != null)
    {
       GL.glColor4f(1.0f, 1.0f, 1.0f, fluo_alpha);
    
    image1.RotateFlip(RotateFlipType.RotateNoneFlipY);
    System.Drawing.Imaging.BitmapData bitmapdata;
    Rectangle rect = new Rectangle(0, 0, image1.Width, image1.Height);
    bitmapdata = image1.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
    
    GL.glPixelStorei(GL.GL_PACK_SKIP_IMAGES,0);
    GL.glGenTextures(0, this.texture);	
    GL.glBindTexture(GL.GL_TEXTURE_2D, 0);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_NEAREST);
    GL.gluBuild2DMipmaps(GL.GL_TEXTURE_2D, (int)GL.GL_RGB, image1.Width, image1.Height, GL.GL_BGR_EXT, GL.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
    image1.UnlockBits(bitmapdata);
    image1.Dispose();
    }
    

    Und dieser Code funktioniert, wenn bmp von der Platte geladen ist, aber nicht, wenn bmp so wie oben gezeigt erstellt wird?

    Das man Texturen nur aus Dateien laden kann ist natürlich Unsinn.

    Bye, TGGC (Reden wie die Großen)



  • Richtig nur wenn ich sag

    bmp.Save("bild.bmp", ImageFormat.Bmp);
    

    bekomm ich das Bild zu sehen, wenn ich das Bild aber nur so

    Bitmap bmp = new Bitmap(200, 300);
    bmp.SetPixel(x, y, Color.FromArgb((int)r, (int)g, (int)b));
    

    erzeuge ohne es extra zu speichern bekomm ich nur ein weisses Bild.
    Aber warum und wieso weiss ich nicht.



  • D.h. laden musst du das Bild nicht wieder, nur speichern?

    Bye, TGGC \-/



  • Die BMP-Ladefunktion (die nicht von Dir ist?!?) macht wohl etwas mit dem BMP Format anders, was Du in Deinem "LowLevel-Painter" _nicht_ berücksichtigst... 🙄



  • Ich höre immer Laden, aber ich sehe nix wo geladen wird!

    Bye, TGGC \-/



  • Laden war ein gutes Stichwort, ich hätt das Bitmap auch richtig laden sollen dann wärs auch gegangen.
    Vielen Dank!



  • Ich denke du willst es grad nicht laden?

    Quotenmausi schrieb:

    Allerdings möchte ich das Bild direkt aus dem Speicher verwenden

    Gewöhnt Euch doch bitte mal an, Eure Fragen etwas genauer zu stellen!

    Bye, TGGC \-/



  • Ich wollte das Bild nicht speichern. Wenn ich laden geschrieben hab dann wars ein versehen aber soweit ich das jetzt gesehen hab hab ich nie geschrieben dass ich es nicht laden will sondern dass ich es nicht erst speichern will, aber egal. Gestimmt hat letztendlich die übergabe zwischen dem beiden Bitmap-Variablen nicht.
    Muss jetzt nur noch hinbekommen, dass sich meine Bilder, wenn sie sich geändert haben, neu zeichnen.



  • Genau, egal, ich versuch bei nächstem mal dann nicht zu helfen und gut ist. Notiert.

    Bye, TGGC \-/



  • Du hast mir geholfen, DANKE dafür. Hab nur richtiggestellt, dass vom Speichern und nicht vom Laden die rede war.


Anmelden zum Antworten