Clownacy
ea83d4ba8a
Merge branch 'master' into accurate
2019-08-25 20:35:01 +01:00
Clownacy
aaff887578
Remove old dummied-out line
2019-08-25 17:18:20 +00:00
Clownacy
739134e68a
Shut up a runtime error in the OpenGL renderer
2019-08-25 16:50:06 +00:00
Clownacy
4bc80a288d
More cleanup
2019-08-25 16:49:52 +00:00
Clownacy
6f71f2405d
Code cleanup
2019-08-23 00:30:33 +00:00
Clownacy
32c55a66fd
KeyControl tweaks
...
Style change, and compatibility improvement ('int' can be 16-bit, but
the KeyBind enums exceed that. 'long' is guaranteed to be 32-bit, and
won't affect ASM-accuracy since MSVC2003 treats int and long
identically)
2019-08-21 18:38:59 +00:00
Clownacy
b7d01aae3f
Overhauled the Music ID enum
...
This should be ASM-accurate, since SurfaceID was
2019-08-21 18:26:20 +00:00
Clownacy
3e34136f69
Overhauled the NPC_flags, and applied them everywhere
...
No more raw values floating about in the decompiled code.
Been wanting to do this for ages.
2019-08-21 17:59:06 +00:00
Clownacy
ce8b5651bc
Give the FONT_PIXEL_MODE enums a type
2019-08-21 16:25:02 +00:00
Clownacy
64598dc2a5
Rename Surface_Ids to SurfaceID
...
For code style consistency (this isn't a vanilla enum name - I don't
think there even was an enum for this in the original source code)
2019-08-21 16:18:55 +00:00
Clownacy
940034dc22
Define GLEW_STATIC when creating a static build
2019-08-20 12:43:48 +00:00
Clownacy
eaae225c70
Remove deprecated GLSL function usage
2019-08-20 12:41:32 +00:00
Clownacy
a69a4cd608
Print more OpenGL debug messages
2019-08-20 12:40:37 +00:00
Clownacy
c27d15dddc
Prevent segfault on shutdown
...
Oddly enough, putting the check in the Release function doesn't fix
it. Makes me wonder how DirectSound did it. I don't know much C++.
2019-08-15 18:46:04 +00:00
Clownacy
cb4a9d40b9
Added missing GLEW headers
2019-08-15 18:45:45 +00:00
Clownacy
22dc6836c5
Shut up a warning
2019-08-14 17:57:19 +00:00
Clownacy
56adcd9dfe
Convert SDLTexture glyphs to static textures
...
This way they don't need regenerating in the first place.
2019-08-14 17:06:16 +00:00
Clownacy
4f057dd72a
Revert "Split glyph surface creation and pixel upload"
...
This reverts commit 5da3b72fca
.
2019-08-14 16:30:48 +00:00
Clownacy
f354b84f6a
Revert "Glyphs now regenerate with the rest of the game's textures"
...
This reverts commit aa6174b3f2
.
2019-08-14 16:26:37 +00:00
Clownacy
add4e69374
Made Sound.cpp more accurate
2019-08-13 20:45:50 +01:00
Clownacy
8f5370ea81
Fix the MSVC2003 build, and add RestoreTextScript to the...
...
...devilution-comparer list.
2019-08-13 20:03:13 +01:00
Clownacy
e708dc3a7d
Make the surface_metadata struct match the original
2019-08-13 19:48:18 +01:00
Clownacy
aa6174b3f2
Glyphs now regenerate with the rest of the game's textures
...
God-damn this code is ugly
2019-08-13 18:32:44 +01:00
Clownacy
5da3b72fca
Split glyph surface creation and pixel upload
...
When DirectX-SDL2 loses its device, it doesn't lose its textures,
just their contents, so we shouldn't remake the textures when we
regenerate the glyphs (that's coming next commit).
2019-08-13 18:02:14 +01:00
Clownacy
29c84ae222
Fixes
2019-08-13 06:36:31 +00:00
Clownacy
dddf968810
Backend_SupportsSubpixelGlyph -> Backend_SupportsSubpixelGlyphs
2019-08-13 05:14:37 +00:00
Clownacy
03f797a267
Pretty sure these #includes aren't needed
2019-08-13 05:11:40 +00:00
Clownacy
59735a61e6
Minor style change
2019-08-13 05:03:43 +00:00
Clownacy
16b2f6a474
Added enums for the surface types
2019-08-13 04:42:29 +00:00
Clownacy
d47f683491
Ported the Windows version's surface regeneration
...
Has the same imperfections: if you regenerate the surfaces while a
text box is open (and while using Courier New I guess), the text will
regenerate with smaller spaces.
2019-08-13 04:36:05 +00:00
Clownacy
2c9fbc765e
Render backend API simplification part 4: OpenGL3
2019-08-13 03:07:38 +00:00
Clownacy
1ca240d8ee
Render backend simplification part 3: SDLTexture
...
Stripped out all the software-fallback stuff, since I'll be replacing
it soon, and the new API would require a slight refactor anyway.
2019-08-13 02:54:10 +00:00
Clownacy
1b6804bbe1
Fix BackupSurface
2019-08-13 02:52:37 +00:00
Clownacy
5f0249de98
Render backend API simplification part 2: SDLSurface
2019-08-13 01:44:36 +00:00
Clownacy
3f8ead09d6
Renderer backend simplification part 1: Draw.cpp and Software.cpp
...
By emulating the DirectDraw code more closely, I can simplify the
renderer backend API.
2019-08-13 01:39:08 +00:00
Clownacy
e094f2ff68
Renderer backend fixes
...
Surface-to-surface blits were broken (would draw to screen instead),
and the SDLSurface backend wouldn't even compile.
You know, I thought I tested each backend when I made those changes
to the API...
2019-08-11 05:22:02 +00:00
Clownacy
3a10bf57cb
Fix building the OpenGL3 with the Makefile
...
Why can't any buildsystems just be good
Like, seriously? Why does pkg-config not have an OpenGL package,
so I don't have to deal with this stupid -lopengl32/-lGL stuff?
...Why isn't there a shim libGL that just maps straight to
opengl32.lib?
Arg
2019-08-11 00:04:11 +01:00
Clownacy
c4599bc146
Allow third-party in-source files to go in the external folder
2019-08-10 22:47:40 +01:00
Clownacy
cdbcd5f6c3
Added a local copy of GLEW
2019-08-10 21:47:06 +01:00
Clownacy
85f58d7d39
Rendering backend API naming improvements
2019-08-10 19:50:10 +01:00
Clownacy
2b86db32a0
Backend_Blit always uses a colour key
2019-08-10 19:31:45 +01:00
Clownacy
64f2a78279
OpenGL: Remove SetFramebufferTarget
...
It's causing state conflicts in the enhanced branch. Also, with the
new vertex batching, state changes are minimised, so this function
is redundant.
2019-08-10 19:23:29 +01:00
Clownacy
fc0653e5aa
Back to OpenGL 3.2 (I really want the core profile)
...
In OpenGL 3.1, compatibility mode was an extension, meaning it could
never actually be disabled. 3.2 fixed that with the introduction of
profiles.
2019-08-10 18:05:01 +01:00
Clownacy
3b20c5f3b8
Implement vertex batching in the OpenGL renderer
...
Finally, the performance issue is fixed. I can move back up to OpenGL
3.2 now, and reenable the core profile.
2019-08-10 18:01:48 +01:00
Clownacy
d5ceed4f97
Some minor OpenGL cleanup
2019-08-09 20:04:46 +01:00
Clownacy
7146288e94
Sod it, fall back on compatibility mode if it's available
...
This way, I can use immediate mode, which is way faster than using
buffers for some reason. Since I'm not using profiles anymore, I
dropped the minimum requirement to OpenGL 3.1. If a driver doesn't
support Legacy GL, then it can use the slow buffer code.
But seriously, I need to figure out why using buffers is so slow.
If this was a common problem, Modern OpenGL wouldn't have made it the
only option.
2019-08-09 19:19:43 +01:00
Clownacy
4afe7f4b11
Use orphaning to slightly speed up rendering GPU-side
...
For some reason CPU usage is still double that of the SDLTexture
backend (SDL2 uses OpenGL 2.1, with glEnable/glDisable-style
immediate mode).
If I downgrade to OpenGL 2.1, and use VBO-less glDrawArrays, I get
great performance. I just wish I knew what the AMD driver is doing
that's so much faster.
2019-08-09 16:25:36 +01:00
Clownacy
5712c4ad63
Use an appropriate usage specifier for glBufferData
...
Turns out DYNAMIC was so horribly wrong that it slaughtered the GPU
performance.
2019-08-09 15:58:58 +01:00
Clownacy
b1a706c312
Call glFramebufferTexture2D as rarely as possible
...
Turns out performance is absolutely abysmal on my laptop's copy of
Windows 10 (AMD A9 APU).
This is only one of the weird bottleecks: glFramebufferTexture2D
is a CPU sinkhole, so don't call it often.
2019-08-09 15:55:42 +01:00
Clownacy
ac273d2d7c
Make the ShiftJIS->Unicode translation table *slightly* less ugly
2019-08-08 05:22:24 +00:00