aboutsummaryrefslogtreecommitdiff
path: root/backends/graphics/openglsdl/openglsdl-graphics.h
AgeCommit message (Collapse)Author
2019-06-24OPENGLSDL: Move stretch mode handling into OpenGLGraphicsManagerCameron Cawley
2019-06-22OPENGLSDL: Move getSupportedFormats into OpenGLGraphicsManagerCameron Cawley
2019-03-10SDL: Move fullscreen and screenshot event handling to SdlGraphicsManager (#1522)Cameron Cawley
2018-07-08SDL: Implement stretch mode APIThierry Crozat
Four modes are supported: - Use original size with no scaling - Scale by an integral amount as much as possible but not bigger than the window. - Scale to fit the window while respecting the aspect ratio. There may be black bars on the left and right, or on the top and bottom, but not both. This is the default, and the old behaviour. - Scale and stretch to fit the window. In this mode the aspecy ratio is not respected and there is no black bars. The mode is controled by the "scaling_mode" value (between 0 and 3) in the config file. Also add Crtl-Alt-s hotkey to cycle through scaling modes
2017-10-15BACKENDS: Refactor OpenGL & SDL graphics backendsColin Snover
This patch refactors the OpenGL and SDL graphics backends, primarily to unify window scaling and mouse handling, and to fix coordinate mapping between the ScummVM window and the virtual game screen when they have different aspect ratios. Unified code for these two backends has been moved to a new header-only WindowedGraphicsManager class, so named because it contains code for managing graphics managers that interact with a windowing system and render virtual screens within a larger physical content window. The biggest behavioral change here is with the coordinate system mapping: Previously, mouse offsets were converted by mapping the whole space within the window as input to the virtual game screen without maintaining aspect ratio. This was done to prevent 'stickiness' when the mouse cursor was within the window but outside of the virtual game screen, but it caused noticeable distortion of mouse movement speed on the axis with blank space. Instead of introducing mouse speed distortion to prevent stickiness, this patch changes coordinate transformation to show the system cursor when the mouse moves outside of the virtual game screen when mouse grab is off, or by holding the mouse inside the virtual game screen (instead of the entire window) when mouse grab is on. This patch also improves some other properties of the GraphicsManager/PaletteManager interfaces: * Nullipotent operations (getWidth, getHeight, etc.) of the PaletteManager/GraphicsManager interfaces are now const * Methods marked `virtual` but not inherited by any subclass have been de-virtualized * Extra unnecessary calculations of hardware height in SurfaceSdlGraphicsManager have been removed * Methods have been renamed where appropriate for clarity (setWindowSize -> handleResize, etc.) * C++11 support improved with `override` specifier added on overridden virtual methods in subclasses (primarily to avoid myself accidentally creating new methods in the subclasses by changing types/names during refactoring) Additional refactoring can and should be done at some point to continue to deduplicate code between the OpenGL and SDL backends. Since the primary goal here was to improve the coordinate mapping, full refactoring of these backends was not completed here.
2017-10-07BACKENDS: Fix window sizing of games that switch between multiple resolutionsColin Snover
2016-03-16OPENGL: Simplify context type setting.Johannes Schickel
2016-03-16OPENGLSDL: Try to use GL(ES) context SDL2 defaults to.Johannes Schickel
2016-03-16OPENGL: Add functionality to query OpenGL functions on runtime.Johannes Schickel
This can and will be used for future extension usage support. Tizen changes have been untested.
2015-12-12OPENGL: Refactor screen refresh handling.Johannes Schickel
Subclasses of OpenGLGraphicsManager are now supposed to supply a refreshScreen function which handles actual screen updating (for example, buffer swapping).
2015-02-16SDL: Add basic abstraction class for the SDL window.Johannes Schickel
2015-01-25SDL: Add experimental support for SDL2.Johannes Schickel
This is based upon skristiansson's change set to make ScummVM work with SDL2.
2013-10-23SDL: Clean up graphics manager switching slighty.Johannes Schickel
Sadly this also requires us to extend GraphicsManager for this SDL specific feature. However, since that's only used in the SDL backend and Tizen it should be fine for now...
2013-10-19SDL: Add a OpenGL SDL backend and hook it into the SDL backend.Johannes Schickel
The hooking code is nearly exactly the old hooking code. Only the OpenGL SDL creation has been adapted since it uses a different constructor now.
2013-10-05BACKENDS: Remove OpenGL and OpenGL SDL backend.Johannes Schickel
This breaks our Tizen port.
2011-08-09SDL: Take advantage of SdlGraphicsManager.Johannes Schickel
This gets rid of the hacks, where SdlEventSource added events with custom type numbers to pass SDL_VIDEOEXPOSE and SDL_VIDEORESIZE to the graphics manager. Furthermore it get rids of the uninituitive and hard to trace way of assigning the proper mouse coordinates to mouse related events. Formerly it passed the real screen coordinates through the even dispatching api to the graphics manager (at least hopefully ;-) and let that handle creating a new event with the proper coordinates. Now instead SdlEventSource handles the proper coordinate setup itself. Since this is a behavior change and I can not test all the SDL based small devices ports this commit might break compilation for them and more serve it might also break mouse position behavior. If any of that occurs I am sorry about it.
2011-08-09SDL: Let SDL based graphics managers inherit from SdlGraphicsManager.Johannes Schickel
This also adapts port I can not test (not even the compilation). So if this breaks anything I am sorry about it.
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-03-17OPENGL: Move setFullscreenMode to OpenGLGraphicsManager.Johannes Schickel
2011-03-17OPENGLSDL: Handle active fullscreen mode OPENGLSDL internal.Johannes Schickel
2011-03-17OPENGL: Refactor warpMouse.Johannes Schickel
Now subclasses will not need to worry about the scaling logic themselves, but just need to implement setInternalMousePosition, which should handles setting the system's mouse coordinates.
2010-12-03OPENGLES: Fix the projection matrix and the includes.Jordi Vilalta Prat
svn-id: r54756
2010-11-29SDL: Move #include <SDL.h> into a special wrapper fileMax Horn
svn-id: r54572
2010-09-03OPENGL: Improve scaling, aspect ratio correction and display(GFX) modes.Alejandro Marzini
Now the previous aspect ratio modes are handled as GFX modes. The previous GFX modes were for scaling, but are removed now. A new 4/3 display mode added. Added Ctrl-Shift-A for backward switching through display modes, and Ctrl-Alt-<number key> for switching to a specific GFX mode. Window resizing now is available for all display modes, and will automatically change the scale factor as well as maintain the aspect ratio when needed. svn-id: r52501
2010-08-23OPENGL: Add Ctrl-Shift-Enter hotkey for backward switching fullscreen modes.Alejandro Marzini
svn-id: r52310
2010-08-20OPENGL: Fix issue with resize events generated after going out of fullscreen ↵Alejandro Marzini
mode. svn-id: r52248
2010-08-13OPENGL: Remove unnecessary best fullscreen mode detection code.Alejandro Marzini
svn-id: r52056
2010-08-03OPENGL: Prioritize desktop resolution as default fullscreen mode.Alejandro Marzini
svn-id: r51674
2010-08-02OPENGL: Improve fullscreen mode selection. Add warpMouse adjusting.Alejandro Marzini
svn-id: r51603
2010-07-31OPENGL: Switch to native resolution fullscreen as default.Alejandro Marzini
svn-id: r51560
2010-07-31OPENGL: Add support for BGR and rgb(a) reversed formats (Not available for ↵Alejandro Marzini
GLES). General cleanup and commenting. svn-id: r51559
2010-07-27OPENGL: Implement aspect ratio support and toggling. Improve fullscreen ↵Alejandro Marzini
switching. Fix cursor scaling bug. Now the hotkey Ctrl-Alt-Enter will switch between all available fullscreen modes. Alt-Enter will only switch to the best mode available, and exit fullscreen mode if already on it. The different aspect ratios can be switched with Ctrl-Alt-A. The normal mode will stretch the contents to the screen, while other modes will stretch only one dimension to the screen size, and maintain the aspect ratio for the other dimension. svn-id: r51346
2010-07-24OPENGL: Redesign blitting system. Add basics for aspect correction.Alejandro Marzini
Removed the extra surface in GLTexture. Now there are copies of the texture data in their original format (so engine can get the original data when lockScreen or grabOverlay is called). This copies will be updated when the engine calls a function that modifies the game screen/overlay, and the textures will be marked as dirty. When updating screen, the textures will be updated from the copies data if they are dirty. svn-id: r51234
2010-07-20OPENGL: Implement fullscreen mode.Alejandro Marzini
svn-id: r51049
2010-07-20OPENGL: Fix SDL OpenGL context not resizing well on Linux.Alejandro Marzini
svn-id: r51047
2010-07-19OPENGL: Add basic scaler handle.Alejandro Marzini
svn-id: r51016
2010-07-15Fixed doing OpenGL calls before a graphical context was created.Alejandro Marzini
svn-id: r50905
2010-07-15Replaced the extra SDL functions added to GraphicsManager with an ↵Alejandro Marzini
EventObserver in SdlGraphicsManager. svn-id: r50900
2010-07-13Merged from trunk, from Rev 49499 to HEADAlejandro Marzini
svn-id: r50840
2010-07-12OpenGL manager: Implemented PixelFormat functions. Implemented GFX methods. ↵Alejandro Marzini
Changed how GLTexture determines its format. svn-id: r50811
2010-07-11Moved getGraphicsManager() from OSystem_SDL to ModularBackend. Moved public ↵Alejandro Marzini
SDL graphics manager functions to graphics manager (Allowing OpenGLSdlGraphicsMaanger to be used with other SDL managers easily). Removed BaseSdlGraphicsManager. Implemented in the opengl manager basic screen functions. svn-id: r50796
2010-07-10Added BaseSdlGraphicsManager. Added GLTexture. Alejandro Marzini
svn-id: r50795
2010-07-09Added OpenGLSDLGraphicsManager.Alejandro Marzini
svn-id: r50768