| Custom Mouse Cursor and OpenGL/SDL |
|
Mars_999
|
Hello, I am wondering how do I go about making a custom mouse cursor
work in SDL/OpenGL? As of now I am guessing disable mouse cursor, switch to glOrtho() mode, render a fullscreen image with glRasterPos2i() to position the mouse cursor at mouseX, mouseY? Thanks! _______________________________________________ SDL mailing list http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org |
|||||||||||
|
|
||||||||||||
| Custom Mouse Cursor and OpenGL/SDL |
|
David Olofson
Guest
|
On Tuesday 02 November 2010, at 05.15.55, "Mars_999" wrote:
Why fullscreen? And why bother with glRasterPos2i() when in ortho mode? :-) All you have to do is pass the view size in pixels to glOrtho(), and handle the "wrong way" Y axis in one way or another. In this case, it's probably best to just swap the 0 and height to glOrtho() to get (0, 0) in the top-left corner, as it usually is with other APIs, SDL included. -- //David Olofson - Consultant, Developer, Artist, Open Source Advocate .--- Games, examples, libraries, scripting, sound, music, graphics ---. | http://olofson.net http://olofsonarcade.com http://kobodeluxe.com | '---------------------------------------------------------------------' |
|||||||||||||
|
|
||||||||||||||
| Custom Mouse Cursor and OpenGL/SDL |
|
David Olofson
Guest
|
I figured I might as well throw a mouse cursor into Kobo II, as I'll need one sooner or later anyway, so here goes:
Matrix setup (origo at bottom-left, OpenGL style): --8<----------------------------------------------------------------- MatrixMode(PROJECTION); LoadIdentity(); Ortho(0, screen.w, 0, screen.h, 0, 10); MatrixMode(MODELVIEW); LoadIdentity(); -->8----------------------------------------------------------------- In the SDL event handling switch: --8<----------------------------------------------------------------- case SDL.MOUSEMOTION { mousex = ev.x; mousey = screen.h - ev.y; } -->8----------------------------------------------------------------- Rendering: --8<----------------------------------------------------------------- local cursorsize = 48; Enable(BLEND); BlendFunc(SRC_ALPHA, ONE); Disable(TEXTURE_2D); Begin(TRIANGLES); Color(1, 1, 1, 1); Vertex(mousex, mousey); Color(1, 1, 0, 0); Vertex(mousex + cursorsize * sin(PI/4), mousey - cursorsize * sin(PI/4)); Vertex(mousex, mousey - cursorsize); End(); -->8----------------------------------------------------------------- (No, that's not C. It's EEL - but it's still SDL and OpenGL. On Tuesday 02 November 2010, at 12.45.29, David Olofson wrote:
-- //David Olofson - Consultant, Developer, Artist, Open Source Advocate .--- Games, examples, libraries, scripting, sound, music, graphics ---. | http://olofson.net http://olofsonarcade.com http://kobodeluxe.com | '---------------------------------------------------------------------' |
|||||||||||||||
|
|
||||||||||||||||

