I am curious why OpenGL doesn’t allow for hardware cursors? Graphics cards have supported them since like forever, but OpenGL doesn’t expose this functionality?
I remember reading a post on another forum that DirectX has supported hardware cursors since DX8.0. I think it supports a higher color depth and also larger bitmaps than allowed by traditional cursors. Someone correct me if I’m wrong?
OpenGL is platform independent… it would be nice to have a platform independent cursor.
Would an OpenGL hardware cursor fix the problem when the Win2k/XP drop shadow cursor slows the frame rate in OpenGL windows?
OpenGL is a 3D graphics API and hardware cursors are a 2D graphics feature. If you want a “hardware accelerated” cursor in OpenGL, just draw a textured quad…
A textured quad is often unacceptable because at medium framerates it feels sluggish and at low framerates it appears to jump around. This is why most commercial games use a hardware cursor.
My understanding is that hardware cursors are directly supported by the graphics card (at least all the Nvidia TNT and GF cards specs list hardware cursors as a feature). I believe the idea is that the cursor image is combined with the signal sent to monitor so that it is frame rate independent?
If hardware cursors are graphics card functionality, I think it would be appropiate for OpenGL to expose that in its API. I don’t buy the exscuse about OpenGL being only a 3D API – just looking at the OpenGL Redbook, it has an entire chapter dedicated to drawing bitmaps & pixels.
OpenGL does not deal with mice, neither does DirectX Graphics.
Hardware cursors still work in conjunction with OpenGL, just like they do with DXG. Even the most simplistic GL app has no problems coexisting with a hardware mouse cursor. In fact, you have to explicitly turn it off if you don’t want it.
It currently seems as if you never actually tried.
I cannot see any reason for hardware-cursors. I don´t think it is a missing feature of OpenGL.
However, in one point you are right:
OpenGL - High Performance 2D/3D Graphics
Thanks for your answers, I will think about it.
zeck - The only way I’m aware that you can interact with the hardware cursor abilities of the card is by using the Windows API cursor functions. I’m curious, because I’ve never heard of any other way to do it, could you point me towards or explain how to turn it off explicitly (without going implicitly through the Win32 API)?
edit - spelling
[This message has been edited by Stephen_H (edited 08-25-2003).]
without going implicitly through the Win32 API
That, you’re not going to get, because the OS and window manager owns the hardware cursor.