Age | Commit message (Collapse) | Author | Files | Lines |
|
* TrueTypeFont class now takes into account the graphics scale, in order
to render an appropriate higher-resolution texture.
* Removed TrueTypeFont::fontCounter, since TTF_Init/TTF_Quit already
keep a counter.
* Avoid copying the rendered string needlessly, when it already exists
in the cache. Avoid another copy, when inserting a new chunk into the
cache.
|
|
This can be used for smoother mouse cursor movement when rendering our
own mouse cursor (already changed in this commit) and is also necessary
for implementing support for HiDPI font rendering.
Also dropped some almost duplicated OpenGL code.
|
|
* Added "Scale" user option, which can either by "Auto" or an explicit
scaling factor. Its maximum value depends on the current resolution.
The "Auto" factor is based on keeping the logical resolution on at
least 800x600, wheres the maximum scale is based on keeping the
logical resolution on at least 640x480.
* Enabled support for High DPI. This means the rendering target can now
have a different resolution than the window size, which can happen on
macOS, Windows and Wayland. The resulting scale is multiplied by the
above user-controlled scale.
Currently, this looks ugly for non-integer scales, which are not used
on macOS and can only be configured on some Wayland compositors.
Has not been tested on Windows.
* Simplified OpenGL initialization (moved out of _beginDraw).
* Made sure _beginDraw/_endDraw sets a clip area also for SDLGraphics.
|
|
* Don't needlessly store or return raw pointers in BeingInfo
* Less copying, more moving
* Less else after return
* Make AddDEF a template instead of a macro
* Removed some unused includes
* Use range-based for loops
|
|
The configuration and setup UI were adjusted to the new options.
This also fixes issues in applying new video settings.
Default resolution was changed from 800x600 to 1280x720. VSync is
enabled by default while FPS limit was disabled.
Display aspect ratio for the resolution options.
I had to work around some macOS issues:
* Don't change window size when it appears to be "maximized", since it
just changes the rendering area while leaving the window maximized.
* Unset fullscreen display mode temporarily to allow changing resolutions,
otherwise the rendering area no longer matches the screen and mouse
input is also off.
* Removed SDL_WINDOW_ALLOW_HIGHDPI for now because it causes issues on
macOS, since we're not actually handling the scaling factor.
A Video class and an SDLGraphics subclass were split off from Graphics.
This setup has Less duplication and leaves the OpenGLGraphics and
SDLGraphics better separated.
Fixes #57
Fixes #58
|
|
modernize-use-auto
modernize-use-nullptr
modernize-use-override
modernize-use-using
|
|
|
|
Actually neither glFlush nor glFinish need to be called manually [1].
However, the rendering pipeline is then free to queue up future frames
which can cause a lag which is especially noticable with mouse movement.
To avoid this lag, we call glFinish after SDL_GL_SwapBuffers. This makes
sure processing of the next frame does not start before the current
frame is being displayed.
[1] http://www.opengl.org/wiki/Common_Mistakes#glFinish_and_glFlush
Reviewed-by: Yohann Ferreira
Sounded-fine-to: Erik Schilling
|
|
If the graphics driver supports this, there is no need to create
textures with power-of-two dimensions. It is then also preferred to use
regular textures than relying on the older GL_ARB_texture_rectangle
extension.
Reviewed-by: Erik Schilling
|
|
* Removed empty and unused function `setTargetPlane`
* Removed duplicated enabling of `GL_VERTEX_ARRAY`
* Removed strange smoothing code from `drawRescaledImage`
Reviewed-by: Erik Schilling
|
|
Textures were not rendering correctly on cards that did not support the
GL_ARB_texture_rectangle extension, since the alternative code path was
passing ints as floats and floats as ints to OpenGL.
Reviewed-by: Erik Schilling
|
|
|
|
Window positions are semi-smartly corrected as a result of the resize.
Not supported when using OpenGL on Windows for now.
Reviewed-by: Yohann Ferreira
|
|
Reviewed-by: Thorbjørn Lindeijer
Reviewed-by: Yohann Ferreira
|
|
This fixes overlay effects that are meant to scale with screen
resolution.
The problem was that the texture coordinates were not calculated
correctly. They were adjusted to the scaled size of the image, and when
scaling both the vertex and the texture coordinates, the image will
simply not appear scaled at all. Now the texture coordinates are
calculated based on the visible part of the original texture.
There was also a problem with the vertex coordinates, which were not
taking into account the visible part of the image.
TMW-Mantis-issue: 1047
|
|
Resolves: Mana-Mantis #265.
Trivial fix.
|
|
Use batch commands and not selecting already selected texture.
Signed-off-by: Jared Adams <jaxad0127@gmail.com>
|
|
|
|
|
|
Signed-off-by: Tametomo <irarice@gmail.com>
|
|
Also added the update copyright tool from the Wormux Team.
( And not forgetting credit's due. :P )
|
|
OpenGLGraphics::setVideoMode to stop Graphics::getWidth and getHeight returning 0
|
|
Also remove some extra new lines and fix eAthena's PartyTab define guards.
|
|
|
|
|
|
|
|
|
|
The current login wallpaper (as any streched ones) will look a bit less ugly...
|
|
resolution isn't the default.
You'll have to add this in map properties, for instance if you're want to keep ratio on overlay 0:
<map version="1.0" orientation="orthogonal" width="128" height="128" tilewidth="32" tileheight="32">
<properties>
...
<property name="overlay0keepratio" value="true"/>
...
</properties>
</map>
|
|
The SDL methods to rescale the wallpaper has been optimized to permit rescaling
at load time while OpenGL draws directly rescaled. Does someone know how to smooth
the rescaled image under OpenGL?
|
|
Shouldn't affect performance.
|
|
Conflicts:
Many files.
|
|
Reviewed-by: trapdoor
|
|
the open source project Wormux. To improve SDL performance, the number
of layers that are pushed out to the hardware or software buffers should
be reduced, which is where this function comes into play, as it combines
two surfaces together so that the number of blit operations is reduced.
This function is currently not used, but will be used once a good way to
link each of the target systems is determined so that it only initiates
when SDL is enabled, as well as making sure that each hook that uses
this function is benefiting from it sufficiently. At the moment, it's
suspected that the particle engine will likely be the most likely to
benefit from this function, followed by tile drawing, then sprite drawing.
Signed-off-by: Ira Rice <irarice@gmail.com>
|
|
d654758ef63f6515d678ceaf77d63a2693e08fb7, but for SDL instead. This
currently doesn't buy too much, but it's a little better than it used to
be.
TODO: Find out why SDL is bottlenecked, and try to bring its performance
up to OpenGL levels, if possible.
Signed-off-by: Ira Rice <irarice@gmail.com>
|
|
|
|
that position. This makes it so that when resolutions are changed, the
default locations stay relative to the window's position, and not the
800x600 screen resolution.
Signed-off-by: Ira Rice <irarice@gmail.com>
|
|
useful since buddy lists are tracked through the player relation
interface instead)
Signed-off-by: Ira Rice <irarice@gmail.com>
|
|
Signed-off-by: Ira Rice <irarice@gmail.com>
|
|
This dates back to the old days of TMW, but the usage instructions of
GPLv2 don't mention this being necessary. Since it doesn't add anything,
avoid the branding in these sections.
|
|
(cherry picked from mainline commit f6f8b2f885145d4cacf7a6c42d88b6a39f71b366)
Conflicts:
src/openglgraphics.cpp
|
|
|
|
by me accidently removing the include for main.h in openglgraphics.
|
|
statements, as well as removing the new skill dialog, which we do not,
nor will we use (if we do, it'd be a new one that we'd make).
WARNING!!! This, and all other previous builds have a linker error for
the Gnome libraries version 4.3.2 on my setup. It's assumed that this is
also the case for other users of this library as well. I'm currently
assuming that there's a bug in the compiler itself, and will look into
reporting this, but in the mean time, it doesn't build for these users,
unfortunately. Sorry about this.
|
|
|
|
emoticons, so alt can be used for alternate characters. Disable vsync
on mac.
|
|
|
|
including optimization of OpenGL memory usage on modern OpenGL drivers.
Patches by Guillaume Melquiond.
|
|
|
|
|