Commit Graph

55 Commits

Author SHA1 Message Date
Zack Middleton 551fa6c797 OpenGL2: Fix issues running under WebGL 2024-06-06 19:49:17 -04:00
Zack Middleton 350b8f9c7c Restore OpenGL 1.1 support (GL_CLAMP)
GL_CLAMP (clamp to border) was changed to GL_CLAMP_TO_EDGE in 2008
(f2baf359). In 2018 (ce1d5406) I made OpenGL 1.2 be required since
GL_CLAMP_TO_EDGE is used.

Restore support for GL_CLAMP in order to support OpenGL 1.1 like vanilla
Quake 3 does. This should allow using the default Microsoft Windows
GDI Generic OpenGL 1.1 driver (untested but it won't fail the version
check at least).

From gpuinfo.org, it looks like drivers stopped advertising support for
GL_SGIS_texture_edge_clamp so use a version check in addition to the
extension check.

r_allowExtensions 0 disables using GL_CLAMP_TO_EDGE in the opengl1
renderer. GL_CLAMP support wasn't added to the opengl2 renderer.
2019-05-28 22:44:57 -05:00
Zack Middleton d861a4f427 Load OpenGL ES 2.0 function procs
Load functions procs supported by OpenGL ES 2.0, though there is not a
compatible renderer yet. Change argument for GLimp_Init from coreContext
to fixedFunction.
2018-07-20 23:40:21 -05:00
Zack Middleton 7391215bd4 Don't load non-core GL functions for OpenGL 3.2 core context
Also declare the GL functions in tr_local.h so there is compile error
for non-core GL functions instead of SEGFAULT from dereferencing a NULL
pointer.

Disable the non-functional stencil shadow code that hasn't been updated
to use OpenGL 3.2 core compatible drawing.
2018-07-20 23:40:17 -05:00
Zack Middleton ae9edd1491 Fix shifting bits out of byte in tr_font.c
Found using LLVM sanitizer. Reported by Dominic "lonkamikaze" Fandrey.
2018-04-08 21:41:31 -05:00
Edward Betts fe42b8653d Correct spelling mistakes. 2017-11-22 01:40:20 -06:00
Zack Middleton a83ae01d93 Load OpenGL ES 1.1 function procs 2017-10-02 04:48:07 -05:00
Zack Middleton da07a6dbd9 Support parsing OpenGL ES version strings
The renderers don't support OpenGL ES though.
2017-10-01 23:09:20 -05:00
Zack Middleton c9d12aa3f3 Add common OpenGL version parsing + OpenGL 3 fixes
- Parse OpenGL version in sdl_glimp.c to share with both renderers.
- Add GL_VERSION_ATLEAST(major, minor) macro.
- Get address of glGetStringi if using OpenGL 3.
- Fix glConfig.extensions_string when using GL3 core context in
opengl2 renderer.
- Make opengl1 renderer's gfxinfo support qglGetStringi too.
2017-10-01 23:09:20 -05:00
Zack Middleton 20573bce43 Don't link to libGL at compile time
Get all OpenGL functions using SDL_GL_GetProcAddress(). This makes it
easier to cross-arch compile on Linux and add support for OpenGL ES
in the future.

Users still have to supply their own libSDL2 for cross-arch compiling
on Linux. But now the user does not have to re-install libgl1-mesa-dev
package for i386 or amd64 on Debian when switching between compiling
ioquake3 for x86 and x86_64.
2017-10-01 23:07:33 -05:00
SmileTheory 3f415abe61 OpenGL2: Use extension functions with OpenGL versions before 3.0. 2017-08-07 18:00:00 -07:00
Zack Middleton 59b1262b82 Fix floating point precision loss in renderer [part 2]
Fix floatTime using float precision instead of double using GCC.
Fix R_BindAnimatedImage to be in sync with function table.
Fix vertexDeform bulge, vertexDeform normals, noise wave function
at high level time.

Revert unnecessary float -> double conversions.
2017-08-03 00:14:22 -05:00
Zack Middleton e62941396d Remove unused imgFlag_t value IMGFLAG_SRGB 2017-07-30 15:39:32 -05:00
SmileTheory d549b642bc OpenGL2: Use an OpenGL 3.2 core context if available. 2017-07-13 12:03:10 -07:00
SmileTheory c65d2c2657 Add vao cache for static surfaces.
Remove support for draw range elements, multi draw arrays, world vao creation, surface merging.
2017-04-28 02:13:25 -07:00
SmileTheory 0672905ef1 OpenGL2: Detect Intel graphics and avoid/use certain operations there.
Also use qglCopyTextureSubImage2DEXT instead of qglCopyTextureImage2DEXT.
2016-12-07 22:30:55 -08:00
SmileTheory e022abeebb OpenGL2: Fix GL_EXT_direct_state_access function names. 2016-07-28 20:04:25 -07:00
SmileTheory 716438168f OpenGL2: Use loader for all extension funcs. 2016-07-26 00:41:31 -07:00
SmileTheory f0086e8c2a OpenGL2: Add new GL function loader. 2016-07-25 06:30:25 -07:00
SmileTheory 251c983681 OpenGL2: Require OpenGL 2.0. 2016-07-24 21:29:13 -07:00
Zack Middleton 420bd09164 OpenGL2: Remove loading (unused) glDrawBuffersARB 2016-06-15 13:58:26 -05:00
SmileTheory 28ff383061 OpenGL2: Direct state access, part 3: Framebuffers. 2016-01-20 06:32:50 -08:00
SmileTheory f70e9dac01 OpenGL2: Direct state access, part 2: Uniforms. 2016-01-18 23:30:36 -08:00
SmileTheory 275317fefb OpenGL2: Direct state access, part 1: Texture binds 2016-01-18 04:46:01 -08:00
SmileTheory e25035672d Fix error handling in RE_SaveJPGToBuffer(). 2015-12-21 01:05:55 -08:00
SmileTheory d8fd07b69a Make jpeg loading errors non-fatal. 2015-12-20 03:08:50 -08:00
SmileTheory cbfc3471bc OpenGL2: Switch to RGTC from LATC for normal maps.
Also added a RGTC compressor as a workaround on Intel graphics.
2015-12-15 03:23:55 -08:00
Zack Middleton f110f668bf Move image load function prototypes to tr_common.h
The functions themselves are in code/renderercommon/tr_image_*.c
2015-06-12 14:22:37 -05:00
Zack Middleton 08ddb99732 Fix saving/loading glyph 255 in RegisterFont
The glyph for character 255 (lower case y with two dots above it) was
rendered, but it's glyph information was not stored in fontInfo_t and
not saved into .dat file (including the ones in Team Arena).

Attempting to load it from existing .dat font files is fine because
shader name is "" and gets 0 handle. The handle was already 0 anyway.
2014-12-01 22:04:40 -06:00
SmileTheory 84206c8598 OpenGL2: Vertex array object support. 2014-10-14 01:50:44 -07:00
Tim Angus f83334d81b Add facility to describe cvars 2014-09-26 14:29:51 +01:00
Tim Angus cf7004ffb2 Fix OSX build 2014-08-25 12:03:10 -04:00
Tim Angus 7d026177ad Fix assorted warnings 2014-08-25 14:48:49 +01:00
Zack Middleton 73aa7ef2c7 Merge branch 'master' (early part) into sdl2 2014-03-24 17:51:57 -05:00
Tequila baca82d64e Bunch of comment fixes 2014-03-13 02:20:54 +01:00
Zack Middleton ed087bb89e Merge branch 'master' into sdl2 2014-02-07 23:24:12 -06:00
robo9k 1611188ef7 Fix check for jpeg_mem_ to work with libjpeg-turbo 2014-01-27 23:41:51 +01:00
Zack Middleton fda03ee4ca Fix PNG tRNS length checks 2014-01-10 12:34:48 -06:00
Tim Angus 76e49b668e Merge branch 'master' into sdl2 2013-09-16 22:34:51 +01:00
SmileTheory 7e875c6941 #5979: Cubemap support for opengl2. 2013-09-16 00:54:26 -07:00
Tim Angus bde7665462 Merge branch 'master' into sdl2
Conflicts:
	code/sdl/sdl_input.c
2013-08-16 23:34:08 +01:00
morturp 7b47c6cf36 out seems to be unnecessarily large for one byte per pixel 2013-07-18 03:00:39 +03:00
Zack Middleton 608e852ac6 Free Team Arena fonts/fontImage_X.dat buffer
Caused temp memory to be present all the time, so Hunk_Alloc ignored memory low/high preference.

May have caused other issues as well.
2013-07-04 15:34:05 -05:00
morturp 213b8e2435 Prevent the skip of the glyph if it does not fit 2013-06-26 11:42:59 +03:00
/dev/humancontroller 830d93aa38 add some noreturn annotations 2013-05-30 15:39:22 -05:00
Tim Angus ab4c602374 Fix Freetype build problems 2013-05-27 20:45:42 +01:00
Tim Angus d9d52f0306 Merge branch 'master' into sdl2
Conflicts:
	Makefile
	code/renderercommon/qgl.h
	code/renderergl1/tr_local.h
	code/sdl/sdl_glimp.c
2013-05-08 14:27:15 +01:00
Tim Angus 98360bcd57 Fix some of the things clang --analyze flagged 2013-03-26 16:50:03 +00:00
Tim Angus 3e92679100 Fix USE_FREETYPE breakage 2013-03-12 19:41:52 +00:00
Tim Angus 37c69a8009 Move renderers a bit closer together 2013-03-12 17:52:29 +00:00