RGB Array darstellen



  • Ich hab nachgesehen und festgestellt, dass sich im GL Ordner nur drei Dateien befinden: gl.h, glext.h, glu.h.
    Von glut.h ist keine Spur.
    Was soll ich machen??





  • dranoel schrieb:

    Ich hab nachgesehen und festgestellt, dass sich im GL Ordner nur drei Dateien befinden: gl.h, glext.h, glu.h.
    Von glut.h ist keine Spur.
    Was soll ich machen??

    Einfach freeglut installieren: http://www.transmissionzero.co.uk/software/freeglut-devel/ :3



  • Mach einfach ein Fenster und zeichne deine Daten mit StretchDIBits() rein.



  • Vielen Dank für die Antworten! OpenGl funktioniert jetzt.

    @Husky Puppy: leider funktioniert deine Lösung immer noch nicht.

    Ich habs jetzt soweit zum laufen bekommen:

    #include <windows.h>
    #include <gl\gl.h>
    #include <gl\glut.h>
    #include <ctime>
    
    int width  = 320;
    int height = 240;
    int size   = width * height * 3;
    void display(void);
    
    int main(int argc, char *argv[]) {
        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGB);
        glutInitWindowSize(width ,height);
        glutInitWindowPosition(100,100);
        glutCreateWindow("Vorschau");
        glutDisplayFunc(display);
        glutMainLoop();
        return 0;
    }
    
    void display(void) {    
         float buf[size];
         for (int i = 0; i < size; i++) {
             buf[i] = (rand()/(double)RAND_MAX);
         }
         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
         glDrawPixels(width, height, GL_RGB, GL_FLOAT, buf);
         glutSwapBuffers();
    }
    


  • Freut mich. :3

    Wo genau ist das Problem mit meiner Lösung?



  • Erst einmal funktioniert random() nicht, das musste ich durch rand() ersetzen. Und dann gab es Ärger mit glEnable(GL_TEXTURE_RECTANGLE_ARB);.

    Kann ich eigentlich irgendwo in OpenGL den Fenster-Style konfigurieren?? Ich würde nämlich gerne die Icons zum minimieren, maximieren und schließen verbergen (WS_CAPTION).

    Und ist es möglich Farbwerte im Bereich von 0 bis 255, statt 0 bis 1 einzustellen? Ich möchte ungern jedes mal umrechnen.



  • dranoel schrieb:

    Ersteinam funktioniert random() nicht, das musste ich durch rand ersetzen.

    Ups, scheint wohl nicht in jeder C Library zu sein. ^^>

    dranoel schrieb:

    Und dann gab es Ärger mit glEnable(GL_TEXTURE_RECTANGLE_ARB);.

    Der Code ist schon ein wenig älter. ^^> Es sollte funktionieren, wenn du GL_TEXTURE_RECTANGLE_ARB durch GL_TEXTURE_RECTANGLE ersetzt. :3

    dranoel schrieb:

    Kann ich eigentlich irgendwo in OpenGL den Fenster-Style konfigurieren?? Ich würde nämlich gerne die Icons zum minimieren, maximieren und schließen verbergen (WS_CAPTION).

    Mit OpenGL hat das nichts zu tun, sondern mit der Library, mit der das Fenster erzeugt wird. Wir haben hier glut verwendet, mit der das leider nicht geht. Mit WGL geht das aber sicherlich, allerdings weiß ich nicht wie - ich benutze normalerweise GLX.

    dranoel schrieb:

    Und ist es möglich Farbwerte im Bereich von 0 bis 255, statt 0 bis 1 einzustellen? Ich möchte ungern jedes mal umrechnen.

    Genau das tun wir doch. ^^ Jedes Byte in buf entspricht einem Farbkanal (R, G oder 😎 eines Pixels und kann Werte zwischen 0 und 255 annehmen. :3



  • Genau das tun wir doch. ^^ Jedes Byte in buf entspricht einem Farbkanal (R, G oder 😎 eines Pixels und kann Werte zwischen 0 und 255 annehmen. :3

    Jein! Die Farbe (0,0,255) sieht genau so aus wie die Farbe (0,0,1) (Blau). Das Maximum für einen RGB Wert ist also 1 und nicht 255.
    Jetzt könnte man ja einfach den Farbwert zwischen 0 und 255 durch 255 teilen, aber das bedeutet ja wieder zusätzlichen Rechenaufwand.
    Kann man eventuell eine Modus ändern, sodass Farbwerte zwischen 0 und 255 aktiv sind??



  • dranoel schrieb:

    Jein! Die Farbe (0,0,255) sieht genau so aus wie die Farbe (0,0,1) (Blau). Das Maximum für einen RGB Wert ist also 1 und nicht 255.
    Jetzt könnte man ja einfach den Farbwert zwischen 0 und 255 durch 255 teilen, aber das bedeutet ja wieder zusätzlichen Rechenaufwand.
    Kann man eventuell eine Modus ändern, sodass Farbwerte zwischen 0 und 255 aktiv sind??

    Oh, ich hatte mir deinen Code gar nicht näher angeschaut. ^^> Versuchs mal so:

    void display(void) {    
         char buf[size];
         for (int i = 0; i < size; i++) {
             buf[i] = (rand() % 0xFF);
         }
         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
         glDrawPixels(width, height, GL_RGB, GL_BYTE, buf);
         glutSwapBuffers();
    }
    

    :3


Anmelden zum Antworten