Ich bin neu in der Grafikprogrammierung. Ich versuche mit glDrawPixels zu zeichnen, aber mein Programm hat keine Ausgaben. Ich recherchierte online und ich bekomme verschiedene Antworten auf welche Daten ich in glDrawPixels weitergeben sollte. Ich habe data[w*h*3]
, data[w*h][3]
und data[w][h][3]
gesehen, die die beste ist?c - openGL glDrawPixels
Bisher ich meine Speicherung RGB-Werte unter der Anzeigefunktion:
float pixels[1024][768][3];
int i,j;
//Should give me all red
for (i = 0; i < 768; i++) {
for (j = 0; j < 1024; j++) {
pixels[j][i][0] = 255.0;
pixels[j][i][1] = 0.0;
pixels[j][i][2] = 0.0;
}
}
glDrawPixels(1024,768,GL_RGB,GL_FLOAT,pixels);
mein Hauptprogramm:
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize (1024, 768);
glutCreateWindow (argv[0]);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Der Ausgang ich habe ist nur ein leeres Fenster, was ist Ich mache falsch?
Vielen Dank im Voraus.
leider hinzufügen glWindowPos2i (0,0) vor glDrawPixels funktioniert nicht. Mein Fenster ist immer noch leer (weiß) – user3335341
Zuerst tauschen Sie Ihre Puffer nach dem Rendern? Das heißt, da Sie in Ihrer Zeile 'glutInitDisplayMode'' GLUT_DOUBLE' angegeben haben, müssen Sie die Puffer am Ende des Renderings durch Aufruf von 'glutSwapBuffers' vertauschen. Wenn Sie 'GL_FLOAT' als Typ für' glDrawPixels' verwenden, ist der maximale Farbwert 1,0. Kein Problem hier; nur dass deine Werte auf 1.0 geklemmt werden. – radical7
Was ist der beste Typ für die Daten? meinst du auch, wenn ich rot will, wird es rgb (1 0 0) sein? – user3335341