Es gibt zwei mögliche (sogar wahrscheinliche) Ursachen:
1) Der Export als BMP wird recht wahrscheinlich irgendwann mal über die
GDI laufen, und BMP ist von Hause aus ein Format, dass an und für sich urprünglich ohne Alphakanal konzipiert war. Die gesamte
GDI und andere Teile von Windows haben darunter lange Zeit leiden müssen, und leichte Besserung war erst mit
GDI+ in Sicht. Die Frage ist also hier welchen Weg der Snapshot bis hin zur Datei auf der Platte nimmt.
2) Display-Buffer haben in aller Regel ein Format ohne Alphakanal (welcher Bildschirm kann schon durchsichtig werden?), und selbst wenn das Format an sich mit Alpha ist, so besteht dennoch eine gute Chance, dass die
API diesen ignoriert wenn es weiss dass es um den Front-/Backbuffer geht. Ich kenne mich mit
OpenGL allerdings zu wenig aus um da eine definitive Aussage zu machen.
Grundsätzlich wird zumindest bei
DirectX empfohlen eine Offscreen (=normale, loose) Textur als Rendertarget zu setzen, und dann ihr Surface 0 zu exportieren. Für die Anzeige wird dann noch ein schnelles Fullscreen-Quad mit dieser Textur in den eigentlichen Backbuffer als Target geschmissen, was bei den meisten Spielen durch die Fullscreen-Post-Effekte ohnehin ansteht. Zudem würde ich dringend empfehlen in ein anderes Format zu exportieren, dass auch wirklich Alpha unterstützt, und zwar vom Kern an. Da wären vor allem TIFF, TGA und PNG nennenswert.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)