Ich versuche OpenGL rendered screen
zu PNG
Bild mit transparentem Hintergrund zu speichern. Aber alles, was ich im 4. Kanal bekomme, sind alle 255
Werte.Alpha-Kanal kann nicht auf 0 gesetzt werden in OpenGL + SDL2
Schon vor dem Zeichnen nichts auf dem Bildschirm und nur Clearing hilft nicht.
Was ich in OpenGL für die Initialisierung getan haben den transparenten Hintergrund zu erhalten, ist in etwa die folgenden:
gWindow = SDL_CreateWindow("View", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, width, height,
SDL_WINDOW_OPENGL|SDL_WINDOW_SHOWN|SDL_WINDOW_RESIZABLE);
gContext = SDL_GL_CreateContext(gWindow);
GLfloat clear_col[4] = {0.0, 0.0, 0.0, 0.0};
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(fov, width/(float)height, nearplane, farplane);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(clear_col[0], clear_col[1], clear_col[2], clear_col[3]);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glShadeModel(GL_FLAT);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
pixels = (unsigned char*) malloc(width*height*4);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
// checking the values
FILE*ffp = fopen("saved.bin", "wb");
fwrite(pixels, width*height*4, 1, ffp);
fclose(ffp);
Vielen Dank im Voraus.
Absolut korrekt. –