I did some BeOS graphics programming a long time ago and would like to start again with Haiku, but I’m wondering which APIs I can rely on from now into the future, so that I can overcome expected compatibility issues in any software I release. With Haiku’s recent R1 Alpha 3 release, this seems like a good time to ask.
In order to use OpenGL (whether hardware or software rendered), I remember that placing a BGLView inside a BWindow was the legacy method, but R. Jason Sams saw performance issues with the locking model, and so created BDirectGLWindow for BeOS R5.1 (and as a leaked add-on for R5). As Haiku moves forward with Mesa, Gallium, etc., is it known yet whether one of those APIs (BGLView or BDirectGLWindow) will be the preferred method, or at least continually supported? Has there been talk of creating a new API to provide a GL context?
Separately, are there any graphics cards for which Haiku supports hardware 3D acceleration, either now or realistically expected in the near future?
On the 2D drawing front, how well-supported is BDirectWindow for windowed and full-screen drawing? Does it contain its own internal fallback, or do I need to provide a fallback to a regular BWindow for cards not supporting direct framebuffer blitting? Is the Haiku team planning another API to replace this one, or is everyone basically happy with it?