Load world and brush models into a VBO, and draw it in batches in R_DrawTextureChains_Multitexture. Uses the same immediate mode code as before if VBOs are not available, or if "-novbo" used at the command line. I only touched R_DrawTextureChains_Multitexture because it's usually the main bottleneck aside from alias model rendering.

This seems to help fps a fair bit on maps with a lot of world polys like jam2_tronyn. Tried on a few computers with intel and nvidia gpus, windows, mac os, linux, and there's always at least some fps improvement. Best case was 70fps -> 96fps on jam2_tronyn, on OS X + nvidia 650gt.

Interested to hear how this works for amd gpu's, just do a timedemo with and without "-novbo".

Only downside is I had to disable the fast path in Vid_Toggle_f() because at least with SDL1, the vbo no longer works after a toggle. So as a result, fullscreen toggles with alt-enter are slightly slower.

git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1018 af15c1b1-3010-417e-b628-4374ebc0bcbd
Makefile[.*]: SDL2 build support. 'make USE_SDL2=1' to enable.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1019 af15c1b1-3010-417e-b628-4374ebc0bcbd
Revamp SDL2 key handling, based on how ioquake3 does it.

- Reverted the addition of the interpret_shift param to Key_Event
- Now, SDL_KEYUP/SDL_KEYDOWN are converted from SDL scancodes to quake keys, and passed directly to Key_Event with no extra conditions / logic
- When SDL2 is used, Key_Console/Key_Message no longer convert keys to characters to insert in the typing buffer, but all other functionality is unchanged
- SDL_TEXTINPUT calls a new function, Char_Event. This calls either Char_Console/Char_Message depending on the keydest. These just insert the typed text into the buffer

This is cleaner than before because it maintains a clear separation between key presses and characters, whereas the old code was converting characters from SDL_TEXTINPUT back into fake keys and then feeding those into Key_Event. This also fixes Ctrl+C / Ctrl+V not working in the console

git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1020 af15c1b1-3010-417e-b628-4374ebc0bcbd
keys.c: K_BACKSPACE (127) is a non printable character.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1021 af15c1b1-3010-417e-b628-4374ebc0bcbd
input: remove the USE_SDL2 check from keys.c.

Instead, make the backend responsible for calling either or both
of Key_Event and Char_Event under the appropriate circumstances.
For SDL2 this means no change, for SDL1 this means call both when
a key is pressed, but call only Key_Event when a key is released.



git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1022 af15c1b1-3010-417e-b628-4374ebc0bcbd
in_sdl: SDL1: don't send '`' or '~' to the console.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1023 af15c1b1-3010-417e-b628-4374ebc0bcbd
input: Some cleanup regarding the special treatment of '`' and '~' in the console.

This was hardcoded in in_sdl.c, now it is handled by Char_Console() itself, like it is in Key_Event().


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1024 af15c1b1-3010-417e-b628-4374ebc0bcbd
net_sdlnet.c: Silence an assigned-but-not-used compiler warning.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1025 af15c1b1-3010-417e-b628-4374ebc0bcbd
gl_vidsdl.c: Minor VID_Toggle() fast path optimization.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1026 af15c1b1-3010-417e-b628-4374ebc0bcbd
input: Some more console-toggle-key tuning.

Partial revert of r1024, since the lastKeyDown stuff is actually needed for SDL2 when the keyboard layout has a printable character that isn't '`' or '~' on the default console-toggle-key (the one below 'Esc'). Instead of hardcoding it though, it is now determined by a new Key_ConsoleBindable function. This makes sure that we don't write an unwanted character into the console as a side effect of opening/closing it, but it still does allow the user to type '`' and '~' in chat messages.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1027 af15c1b1-3010-417e-b628-4374ebc0bcbd
keys.c: Simplify Key_ConsoleBindable.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1028 af15c1b1-3010-417e-b628-4374ebc0bcbd
input: Add a function Key_GameKey to separate the input driver layer a bit more.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1029 af15c1b1-3010-417e-b628-4374ebc0bcbd
menu: Add Char_Event support for the textfields in the menu.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1030 af15c1b1-3010-417e-b628-4374ebc0bcbd
fix SDL2 compilation using g++

git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1031 af15c1b1-3010-417e-b628-4374ebc0bcbd
update README files to reflect further 0.85.10 changes so far.

git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1032 af15c1b1-3010-417e-b628-4374ebc0bcbd
bumped version to 0.90.0

git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1033 af15c1b1-3010-417e-b628-4374ebc0bcbd
Makefile.darwin: target 10.5 when building for x86 against SDL2.
build_cross_osx-sdl2.sh: new script for me to cross-build on my linux.


git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@1034 af15c1b1-3010-417e-b628-4374ebc0bcbd
r_world: Add a new R_DrawTextureChains_Multitexture_VBO function. Draws lightmapped surfaces with fulbrights in one pass, using the VBO. Requires 3 TMUs, GL_COMBINE_EXT, and GL_ADD.
	R_DrawTextureChains_Multitexture: revert to the way it was before VBO support was added.
gl_texmgr: expose GL_SelectTexture. make the implementation less convoluted and support 3 TMUs.
gl_vidsdl: check GL_MAX_TEXTURE_UNITS
r_brush: only create VBOs if 3 TMUs available