VOGONS

Common searches


First post, by NY00123

User metadata
Rank Member
Rank
Member

NOTE: It actually seems like I wasn't the first to try this: Re: Patch for OpenGL fullscreen bug. Haven't seen a recent response from that forum member, though.

[EDIT] Warning: Do not blame me if any arbitrary shader makes you feel bad (say dizzy) while using it. You're on your own anyway, and some things may currently be done in an improper way (technically).

======

Hey,

I have attached a patch that adds basic GLSL shader support, along with a few sample shaders, one of them being an adaptation of this: https://gitorious.org/bsnes/xml-shaders/blobs … terlaced.shader.

Note that a pair of shader files (vertex and fragment) should go into a "glshaders" directory, located where the default DOSBox config file (i.e. dosbox-SVN.conf) is found. Basically, same as the "capture" dir. For more details see http://www.dosbox.com/wiki/Dosbox.conf.
Furthermore, the common filename (without the file extension) should be set in the DOSBox configuration file. Finally, OpenGL output is a must and it's also recommended to *disable* any software scaler. Furthermore, output=openglnb may work better.

Usage example for CRT-interlaced.glslf and CRT-interlaced.glslv:

output=openglnb
glshader=CRT-interlaced
scaler=none

Now, if one wonders why should that be done, especially considering the fact there is already a patch with shader support by gulikoza (actually a portion of a Direct3D patch), then here are a couple of reasons:
- Potentially prepare the GL code to be compatible with any environment that supports OpenGL ES 2.0 (but not desktop GL).
- Let the ones interested in that take advantage of shaders on a wider range of platforms.

Note that among the included shaders, there is an adaptation of the CRT-interlaced shader from a source tree relevant to the emulator that was known as bsnes (now named higan). It couldn't be used as-is, though, since I wanted to ensure it is ES 2.0 compatible. Basically, any usage of the fixed pipeline should be gone. In practice, the patch has not yet been tested with true OpenGL ES 2.0 (or OpenGL 3.1)...

It is further the case that a lot of the features of the XML shader file format described here are *not* implemented:
http://gitorious.org/bsnes/pages/XmlShaderFormat
However, it seems to me the format has changed since then, and there are still more changes to come, unsurprisingly. Furthermore, it's just simpler for now to have a pair of basic shader files that can be loaded by DOSBox. The "default" files attached here are also used internally in DOSBox (after applying the patch), in case no shader is desired or one is not found. Finally, it is actually the case for now that, more often than not, a custom fragment shader can be compiled with the internal default vertex shader.

A couple of changes to the format for compatibility with ES 2 (not tested so far): Specify a precision in each fragment shader for the various floats, and manually pass a set of vertices from the DOSBox app (which runs on a CPU) to the vertex shader.
Note that currently the texture coordinates are *not* passed. These are calculated by the vertex shader using the inputs rubyTextureSize and rubyInputSize, along with the input vertex coordinates. It may be more efficient to simply pass these to the vertex shader, rather than let it re-calculate this (a few times per frame). For now, though, this is the case.

Finally, based on the XML shader format, an internal frame counter (rubyFrameCount) is incremented once per frame. In case a custom shader is used, this is done even if there is no actual update to the screen, while a refresh is done on the emulated machine's side. This is done using very little code reminding of stuff done in gulikoza's Direct3D patch. However, *no* buffer swap is done and the shader program is *not* being executed if there is no actual update. If it were the case then someone could complain that GL VSync doesn't work well when it does on vanilla DOSBox.

Attachments

  • Filename
    glshaders.zip
    File size
    13.03 KiB
    Downloads
    43 downloads
    File comment
    A few sample shader files, including the current internal defaults and an adaptation of CRT-interlaced. The file named gpl.txt is bundled due to the presence of CRT-interlaced.
    File license
    Fair use/fair dealing exception
  • Filename
    dosbox_glsl_20130722.diff
    File size
    16.63 KiB
    Downloads
    42 downloads
    File comment
    GLSL patch
    File license
    Fair use/fair dealing exception
Last edited by NY00123 on 2013-07-23, 07:23. Edited 7 times in total.

Reply 1 of 36, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

Awesome! No more Windows only shaders! This might even have potential to get included in trunk (if we beg and sacrifice our goats).
As usual I have no time or rather my office gers renovated and my imac has no real place atm,,,

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox

Reply 2 of 36, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Indeed. I wonder if the EGA CRT shader will perform better in GLSL?

(Basically a combination of the EGAFilter with the CRT shader - it takes like 10 seconds for it to initialize per video mode change)

by the way, DOSBox is not for running Windows 9x

Reply 3 of 36, by NY00123

User metadata
Rank Member
Rank
Member

Thanks for the interest so far!

leileilol wrote:

Indeed. I wonder if the EGA CRT shader will perform better in GLSL?

(Basically a combination of the EGAFilter with the CRT shader - it takes like 10 seconds for it to initialize per video mode change)

One difference is that Microsoft provides its own HLSL shader compiler, while various (collections of) GPUs come with their own differents GLSL compilers.
As for your specific reported issue, one current limitation is that the GLSL shaders are recompiled when a video mode change is in process. Whie it can be avoided, there is still the chance that DOSBox will temporary change to use output=surface in the middle and then back to OpenGL later. And even if we ignore that, SDL_SetVideoMode may recreate the OpenGL context on some platforms (e.g. Windows), and not on others (like GNU/Linux with X11).

Reply 4 of 36, by NY00123

User metadata
Rank Member
Rank
Member

It probably worths to add in a separated post a list of variables that shaders can take advantage of, using the given patch in its current form. A few of these come off the abovementioned XML shader format (used by bsnes/higan before, at least if not currently).

For more information about formatting, the default shaders given before can be used as a reference for now.

On to the list itself:

attribute vec4 a_position: The coordinates of a vertex given to the vertex shader. It originally comes as a vec3 from the CPU, in this order (as floating point numbers): (-1.0f,-1.0f,0.0f), (1.0f,-1.0f,0.0f), (1.0f,1.0f,0.0f), (-1.0f, 1.0f, 0.0f). The first 3 coordinates of a_position seem to consist of any of these points (depending on the vertex).
uniform vec2 rubyTextureSize: The dimensions of the input texture. Currently these are always POT (Power-Of-Two).
uniform vec2 rubyInputSize: The dimensions of the actual input image, a 2D sub image of the given texture. Its offset within the texture (as sent to glTexSubImage2D) is (0,0).
uniform vec2 rubyOutputSize: The dimensions of the output image. (Currently used by the adapted CRT-interlaced shaders only.)
uniform int rubyFrameCount: Frame counter; Initializes to 0 on first usage or host/client video mode change. (Also used just by the CRT-interlaced shaders for now.)

Note that for now, texture coordinates are *not* sent separately. It does *not* mean they should retrieved via gl_TexCoord[0] or a similar thing, if compatibility with OpenGL ES 2.0 (and OpenGL 3.1) is desired. Rather, the vertex shader (re)calculates each of the texture's corners using the attribute a_position and the uniforms rubyTextureSize and rubyOutputSize. It may not be the best way to do it, but this is the situation for now.

Finally, in general it worths to avoid from using any built-in variable that starts with gl_ (like gl_TexCoord), since some of these variables (if not all) are deprecated with newer revisions of OpenGL (ES) in mind.

Last edited by NY00123 on 2013-07-22, 19:27. Edited 1 time in total.

Reply 5 of 36, by kekko

User metadata
Rank Member
Rank
Member

This is something Dosbox really lacks of.
- OpenGL is portable to almost any platform (and actually Dosbox already uses it)
- shaders allow dosbox to extend its range of supported scalers
- it would take advantage of gpu acceleration

Now, someone please write a shader for xBRZ scaler 😜

Reply 9 of 36, by kekko

User metadata
Rank Member
Rank
Member

I can't patch current svn version of sdlmain.cpp

patching file include/render.h
patching file src/gui/render.cpp
patching file src/gui/sdlmain.cpp
Hunk #2 FAILED at 85.
Hunk #3 FAILED at 180.
Hunk #4 succeeded at 252 (offset 5 lines).
Hunk #6 succeeded at 749 (offset 9 lines).
Hunk #8 succeeded at 900 with fuzz 1 (offset 9 lines).
Hunk #9 succeeded at 1011 (offset 2 lines).
Hunk #10 succeeded at 1082 (offset 5 lines).
Hunk #11 FAILED at 1151.
Hunk #12 succeeded at 1178 (offset 3 lines).
Hunk #13 FAILED at 1481.
Hunk #14 succeeded at 1890 (offset -9 lines).
4 out of 14 hunks FAILED -- saving rejects to file src/gui/sdlmain.cpp#

Reply 10 of 36, by NY00123

User metadata
Rank Member
Rank
Member

That is... surely strange. It does seem like the patch I have uploaded is based on revision 3833 (currently the last one).
Just to be sure I have obtained a second copy of the SVN source tree, and I confirm that the patch has just been applied successfully.

Reply 11 of 36, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

kekko, there is already a GL shader for xbrz. I have no idea where I have those files from, but dated march 2012 I have 5xBR-v3.7a.OpenGL.shader (and 3.7b/c/+CRT)

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox

Reply 12 of 36, by kekko

User metadata
Rank Member
Rank
Member
NY00123 wrote:

That is... surely strange. It does seem like the patch I have uploaded is based on revision 3833 (currently the last one).
Just to be sure I have obtained a second copy of the SVN source tree, and I confirm that the patch has just been applied successfully.

Ok i'll try to investigate on this from my side; meanwhile would you mind uploading modified sdlmain.cpp ? thanks

Dominus wrote:

kekko, there is already a GL shader for xbrz. I have no idea where I have those files from, but dated march 2012 I have 5xBR-v3.7a.OpenGL.shader (and 3.7b/c/+CRT)

I guess it's xBR scaler, a bit different scaler and less "advanced" than xBRZ

Reply 15 of 36, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

Patched revision 3833 without problems for me. Kekko, what does "svn info" output for you? One thing to keep in mind, not too long ago, the repository url on SF changed. So you might have an up to date SVN of the *OLD* repository, not the new one.

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox

Reply 16 of 36, by kekko

User metadata
Rank Member
Rank
Member
Dominus wrote:

Patched revision 3833 without problems for me. Kekko, what does "svn info" output for you? One thing to keep in mind, not too long ago, the repository url on SF changed. So you might have an up to date SVN of the *OLD* repository, not the new one.

you're right 😀 i've been far from dosbox for quite a while, I missed that url change.
Thanks

Reply 17 of 36, by kekko

User metadata
Rank Member
Rank
Member

sorry to bother again, sources patched correctly, but linker can't find some gl function instance:

gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x538): undefined reference to `glUnmapBufferARB@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x5b8): undefined reference to `glBindBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x5d1): undefined reference to `glUniform1i@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1585): undefined reference to `glUniform1i@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x16c7): undefined reference to `glBindBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x16de): undefined reference to `glMapBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x19e0): undefined reference to `glUnmapBufferARB@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1a60): undefined reference to `glBindBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1a79): undefined reference to `glUniform1i@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1e07): undefined reference to `glCreateShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1e42): undefined reference to `glShaderSource@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1e4d): undefined reference to `glCompileShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1e68): undefined reference to `glGetShaderiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1e93): undefined reference to `glGetShaderiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1ec1): undefined reference to `glGetShaderInfoLog@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x1ee6): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2b53): undefined reference to `glGenBuffersARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2b6b): undefined reference to `glBindBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2b9e): undefined reference to `glBufferDataARB@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2bb5): undefined reference to `glBindBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2bda): undefined reference to `glCreateShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2c0c): undefined reference to `glShaderSource@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2c1b): undefined reference to `glCompileShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2c3d): undefined reference to `glGetShaderiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2c67): undefined reference to `glCreateShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2c82): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2f40): undefined reference to `glBindBufferARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x2f65): undefined reference to `glDeleteBuffersARB@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x304f): undefined reference to `glGetShaderiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3086): undefined reference to `glGetShaderInfoLog@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x30b9): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x30e8): undefined reference to `glShaderSource@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x30f7): undefined reference to `glCompileShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3119): undefined reference to `glGetShaderiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x313c): undefined reference to `glDeleteProgram@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3144): undefined reference to `glCreateProgram@0'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3159): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3168): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x318c): undefined reference to `glAttachShader@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x31a4): undefined reference to `glAttachShader@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x31b4): undefined reference to `glLinkProgram@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x31c3): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x31d2): undefined reference to `glDeleteShader@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x31f5): undefined reference to `glGetProgramiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3400): undefined reference to `glUseProgram@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3418): undefined reference to `glGetAttribLocation@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3435): undefined reference to `glGetUniformLocation@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x344d): undefined reference to `glUniform1i@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3465): undefined reference to `glGetUniformLocation@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3485): undefined reference to `glUniform2f@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x349d): undefined reference to `glGetUniformLocation@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x34dd): undefined reference to `glUniform2f@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x34f5): undefined reference to `glGetUniformLocation@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3543): undefined reference to `glUniform2f@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x3565): undefined reference to `glGetUniformLocation@8'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x361a): undefined reference to `glVertexAttribPointer@24'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x362a): undefined reference to `glEnableVertexAttribArray@4'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x368c): undefined reference to `glGetShaderiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x36c3): undefined reference to `glGetShaderInfoLog@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x36f6): undefined reference to `glDeleteShader@4'
Show last 11 lines
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x376a): undefined reference to `glGetProgramiv@12'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x37a3): undefined reference to `glGetProgramInfoLog@16'
gui/libgui.a(sdlmain.o):sdlmain.cpp:(.text+0x37d7): undefined reference to `glDeleteProgram@4'
collect2: ld returned 1 exit status
make[3]: *** [dosbox.exe] Error 1
make[3]: Leaving directory `/home/Francesco/dosbox/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/Francesco/dosbox/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/Francesco/dosbox'
make: *** [all] Error 2

Reply 19 of 36, by kekko

User metadata
Rank Member
Rank
Member

same with vs2008 (above was mingw). am i missing something obvious?

1>sdlmain.obj : error LNK2019: unresolved external symbol _glUniform1i@8 referenced in function "void __cdecl GFX_DrawGLTexture(void)" (?GFX_DrawGLTexture@@YAXXZ)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glMapBufferARB@8 referenced in function "bool __cdecl GFX_StartUpdate(unsigned char * &,unsigned int &)" (?GFX_StartUpdate@@YA_NAAPAEAAI@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glBindBufferARB@8 referenced in function "bool __cdecl GFX_StartUpdate(unsigned char * &,unsigned int &)" (?GFX_StartUpdate@@YA_NAAPAEAAI@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glDeleteShader@4 referenced in function "unsigned int __cdecl GFX_LoadGLShader(unsigned int,char const *)" (?GFX_LoadGLShader@@YAIIPBD@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGetShaderInfoLog@16 referenced in function "unsigned int __cdecl GFX_LoadGLShader(unsigned int,char const *)" (?GFX_LoadGLShader@@YAIIPBD@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGetShaderiv@12 referenced in function "unsigned int __cdecl GFX_LoadGLShader(unsigned int,char const *)" (?GFX_LoadGLShader@@YAIIPBD@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glCompileShader@4 referenced in function "unsigned int __cdecl GFX_LoadGLShader(unsigned int,char const *)" (?GFX_LoadGLShader@@YAIIPBD@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glShaderSource@16 referenced in function "unsigned int __cdecl GFX_LoadGLShader(unsigned int,char const *)" (?GFX_LoadGLShader@@YAIIPBD@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glCreateShader@4 referenced in function "unsigned int __cdecl GFX_LoadGLShader(unsigned int,char const *)" (?GFX_LoadGLShader@@YAIIPBD@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glUnmapBufferARB@4 referenced in function "void __cdecl GFX_EndUpdate(unsigned short const *)" (?GFX_EndUpdate@@YAXPBG@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glEnableVertexAttribArray@4 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glVertexAttribPointer@24 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glUniform2f@12 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGetUniformLocation@8 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGetAttribLocation@8 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glUseProgram@4 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGetProgramInfoLog@16 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGetProgramiv@12 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glLinkProgram@4 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glAttachShader@8 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glCreateProgram@0 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glDeleteProgram@4 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glBufferDataARB@16 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glGenBuffersARB@8 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>sdlmain.obj : error LNK2019: unresolved external symbol _glDeleteBuffersARB@8 referenced in function "unsigned int __cdecl GFX_SetSize(unsigned int,unsigned int,unsigned int,double,double,void (__cdecl*)(enum GFX_CallBackFunctions_t))" (?GFX_SetSize@@YAIIIINNP6AXW4GFX_CallBackFunctions_t@@@Z@Z)
1>.\Release/dosbox.exe : fatal error LNK1120: 25 unresolved externals