Item: |
Status: |
OpenGL | Version 1.2. |
Accelerated libraries |
|
Engine access type | DMA mode. You want this. Believe me ;-) |
Supported colordepths | 16 and 32 bit modes are fully working, 15 bit mode is partially working. 8 bit mode isn't implemented yet. At least 15 bit mode will be completed, but not before switching to Mesa 6.2. |
Supported cards | NV04 (TNT 1) upto and including (the now fast performing) NV18 (GeForce 4MX). I'll try to get more modern cards up in the future. Currently the driver blocks use on NV20 and higher. |
3D Rendering functions | Straight and AA (anti-aliased) point and line functions. Straight triangle function: Although Mesa 3.4.2 supports AA triangles, it isn't implemented in the driver yet: it will use non-AA instead. Support for AA triangles will be setup later if possible (engine command is known), after we switch to Mesa 6.2.1. The Depth (Z) buffer is fixed at 16 bit depth. |
3D Texturing | Single texturing is supported. Multiple texturing will be setup later if possible (engine command is known). Texture filtering is supported (bilinear, trilinear). |
3D States |
|
3D driver's 2D Functions |
|
BView's function activation | Be's flags B_WILL_DRAW, B_PULSE_NEEDED and B_FRAME_EVENTS are required for BGLView: some applications rely on it without explicitly issuing them. These flags are hardcoded added by the driver when an application creates a BGLView. Driver stability for B_FRAME_EVENTS and the like is guaranteed by it calling LockLooper()/UnlockLooper() inside the LockGL()/UnlockGL() hooks. Make sure your app calls LockGL()/UnlockGL() for all drawing commands, including openGL calls. Also make sure the context stays locked for the shortest amount of time possible, to maintain least latency for system events that might happen asynchronously to rendering (i.e. keyboard/mouse lagging!). |
App name: |
Location: |
Status: |
Mode: |
Faults: |
Driver or library failsafe: |
3Dlife | Optional sample code | Working as is | BWindow/non-direct mode | Doesn't call glViewport() | Driver calls glViewport() while servicing a backbuffer clear command when it detects no backbuffer was created before. glViewport() takes care of creation among other things. |
GLteapot | Optional sample code | Working after relinking | BDirectWindow/direct mode | None | Relinking against both libGL.so and libGLU.so is required because some items used are in libGL.so these days, while being in libGLU.so at Mesa 3.4.2 'time'. We are 'going back in time'. Fully operational now: resizing and grabbing works. |
Demo | Mesa 3.4.2 | Working after fix | BWindow/non-direct mode | Doesn't call glPopMatrix() | Added glPopMatrix() to the application. A library failsafe can be done in theory, but it requires additional code. It would need to check if the stack still contains a Matrix when Swapbuffers() is called (or so). Checking would be state-dependant. Resizing works. |
Sample |
Mesa 3.4.2, BeBook: openGL kit, BGLView |
Working as is, including resizing. | BWindow/non-direct mode | None | None |
GLQuake for BeOS R4.5 running on R5/dano | http://www.aixplosive.de/projects.html | Working after fixing keyboard lockups (minizing context-locked time and/or rewriting keyboard/mouse handling) | BDirectWindow/direct mode | Fixed keyboard/mouse handling inside game engine. |
This application works OK now:
|
Quake II V3.20 | http://www.bebits.com/app/1712 | Working as is. | BDirectWindow/direct mode |
Doesn't call LockGL(), Destroys/recreates GLView object totally upon modeswitches (which results in driver unloading/reloading): Note, this is not a fault per se. |
Driver calls LockGL() in the BGLView constructor if gl_get_current_context() returns NULL. Probably needs to be done elsewhere ('later') in the driver so it's actually possible that a context was indeed made current by calling LockGL() at some point in time. Driver explicitly Hides/Shows Window upon Show() events so Quake2 stays in direct rendering mode (R5 left-top position offset fault after issuing a 'vid_restart' from the console or switching resolutions in the game menu) |
(Page last updated on March 23, 2006)