[OPenGL] glDrawPixels()



  • also ich möchte mit glDrawPixels() eine Grafik auf den Bildschirm zeichnen.

    Die Daten im RGBA-Format erstelle ich folgendermaßen:

    w = 20;
            h = 20;
    
            Bild = new GLubyte[w*h*4];
    
            for(int i=0;i<w;i++)
            {
                    for(int j=0;j<h;j++)
                    {
                                    Bild[4*(i*w+j)+0] = 0;
                                    Bild[4*(i*w+j)+1] = 200;
                                    Bild[4*(i*w+j)+2] = 255;
                                    Bild[4*(i*w+j)+3] = 255;
                    }
            }
    

    Und gerendert wird das ganze so:

    glDrawPixels(w,h,GL_RGBA,GL_UNSIGNED_BYTE,Bild);
    

    Das Problem ist jedoch, dass er zwar ein Viereck in der angegebenen Größe rendert, dieses immer die gleiche Farbe hat, egal was für Werte bei den Bytes ich angebe!

    Woran könnte das liegen?
    danke schonmal!



  • poste mal deinen ganzen Code - am besten so das man es gleich durch den Compiler jagen kann



  • w = 20;
            h = 20;
    
            Bild = new GLubyte[w*h*4];
    
            for(int i=0;i<w;i++)
            {
                    for(int j=0;j<h;j++)
                    {
                                    Bild[4*(i*w+j)+0] = 0;
                                    Bild[4*(i*w+j)+1] = 200;
                                    Bild[4*(i*w+j)+2] = 255;
                                    Bild[4*(i*w+j)+3] = 255;
                    }
            }
    

    Du wirst wohl j += 4 anstelle von j++ schreiben muessen. So belegt du jedes Pixel mit 0.



  • Danke, es war alles richtig, das einzige Problem war, dass GL_TEXTURE_2D noch enabled war... find ich nur komisch, dass er das dann nicht richtig macht.



  • Wenn w und h unterschiedlich sind, dann mußt du aber folgendes schreiben:

    // h und w tauschen
    for(int i=0;i<h;i++)
       for(int j=0;j<w;j++)
       {
          Bild[4*(i*w+j)+0] = 0
          ...
       }
    


  • Oh, cool danke! Dachte schon, ich muss mich mit quadratischen Dingen begnügen^^


Anmelden zum Antworten