Trying to fix stuff.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3796 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
39cec13461
commit
646fd03f44
12 changed files with 119 additions and 1041 deletions
|
@ -251,6 +251,10 @@ void R2D_Init(void)
|
|||
|
||||
Cvar_ForceCallback(&crosshair);
|
||||
Cvar_ForceCallback(&crosshaircolor);
|
||||
|
||||
#ifdef PLUGINS
|
||||
Plug_DrawReloadImages();
|
||||
#endif
|
||||
}
|
||||
|
||||
mpic_t *R2D_SafeCachePic (char *path)
|
||||
|
|
|
@ -70,7 +70,7 @@ static void SSDL_SetUnderWater(soundcardinfo_t *sc, qboolean uw)
|
|||
}
|
||||
|
||||
|
||||
static void SSDL_Submit(soundcardinfo_t *sc)
|
||||
static void SSDL_Submit(soundcardinfo_t *sc, int start, int end)
|
||||
{
|
||||
//SDL will call SSDL_Paint to paint when it's time, and the sound buffer is always there...
|
||||
}
|
||||
|
|
|
@ -2274,7 +2274,8 @@ void COM_InitFilesystem (void)
|
|||
//use the game based on an exe name over the filesystem one (could easily have multiple fs path matches).
|
||||
for (i = 0; gamemode_info[i].argname; i++)
|
||||
{
|
||||
if (strstr(com_argv[0], gamemode_info[i].exename))
|
||||
ev = strstr(com_argv[0], gamemode_info[i].exename);
|
||||
if (ev && (!strchr(ev, '\\') && !strchr(ev, '/')))
|
||||
gamenum = i;
|
||||
}
|
||||
//use the game based on an parameter over all else.
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
#ifdef D3DQUAKE
|
||||
#include "shader.h"
|
||||
#include "shader.h"
|
||||
#if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
|
||||
#define HMONITOR_DECLARED
|
||||
DECLARE_HANDLE(HMONITOR);
|
||||
#endif
|
||||
#include <d3d9.h>
|
||||
extern LPDIRECT3DDEVICE9 pD3DDev9;
|
||||
|
||||
|
|
|
@ -1087,9 +1087,6 @@ static void (D3D9_Draw_Init) (void)
|
|||
}
|
||||
static void (D3D9_Draw_ReInit) (void)
|
||||
{
|
||||
#ifdef PLUGINS
|
||||
Plug_DrawReloadImages();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void (D3D9_R_Init) (void)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -435,10 +435,14 @@ void GL_TexEnv(GLenum mode)
|
|||
|
||||
static void BE_SetPassBlendMode(int tmu, int pbm)
|
||||
{
|
||||
#ifndef FORCESTATE
|
||||
if (shaderstate.blendmode[tmu] != pbm)
|
||||
#endif
|
||||
{
|
||||
shaderstate.blendmode[tmu] = pbm;
|
||||
#ifndef FORCESTATE
|
||||
if (shaderstate.currenttmu != tmu)
|
||||
#endif
|
||||
GL_SelectTexture(tmu);
|
||||
|
||||
switch (pbm)
|
||||
|
@ -487,7 +491,9 @@ static void BE_SetPassBlendMode(int tmu, int pbm)
|
|||
/*OpenGL requires glDepthMask(GL_TRUE) or glClear(GL_DEPTH_BUFFER_BIT) will fail*/
|
||||
void GL_ForceDepthWritable(void)
|
||||
{
|
||||
#ifndef FORCESTATE
|
||||
if (!(shaderstate.shaderbits & SBITS_MISC_DEPTHWRITE))
|
||||
#endif
|
||||
{
|
||||
shaderstate.shaderbits |= SBITS_MISC_DEPTHWRITE;
|
||||
qglDepthMask(GL_TRUE);
|
||||
|
@ -632,16 +638,27 @@ void GL_LazyBind(int tmu, int target, texid_t texnum, qboolean arrays)
|
|||
static void BE_EnableShaderAttributes(unsigned int newm)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
i = 0;
|
||||
if (newm & (1u<<i))
|
||||
qglEnableVertexAttribArray(i);
|
||||
else
|
||||
qglDisableVertexAttribArray(i);
|
||||
|
||||
if (newm == shaderstate.sha_attr)
|
||||
return;
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 1; i < 8; i++)
|
||||
{
|
||||
#ifndef FORCESTATE
|
||||
if ((newm^shaderstate.sha_attr) & (1u<<i))
|
||||
#endif
|
||||
{
|
||||
if (newm & (1u<<i))
|
||||
qglEnableVertexAttribArray(i);
|
||||
else
|
||||
qglDisableVertexAttribArray(i);
|
||||
}
|
||||
}
|
||||
shaderstate.sha_attr = newm;
|
||||
}
|
||||
void GL_SelectProgram(int program)
|
||||
|
@ -662,6 +679,9 @@ static void GL_DeSelectProgram(void)
|
|||
|
||||
/*if disabling a program, we need to kill off custom attributes*/
|
||||
BE_EnableShaderAttributes(0);
|
||||
|
||||
/*ATI tends to use a true 100% alias here, so make sure this state is reenabled*/
|
||||
qglEnableClientState(GL_VERTEX_ARRAY);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2545,6 +2565,7 @@ static void BE_RenderMeshProgram(const shader_t *shader, const shaderpass_t *pas
|
|||
{
|
||||
qglDisableClientState(GL_COLOR_ARRAY);
|
||||
qglDisableClientState(GL_VERTEX_ARRAY);
|
||||
BE_EnableShaderAttributes(attr);
|
||||
for (i = 0; i < pass->numMergedPasses; i++)
|
||||
{
|
||||
Shader_BindTextureForPass(i, pass+i, false);
|
||||
|
@ -2558,6 +2579,8 @@ static void BE_RenderMeshProgram(const shader_t *shader, const shaderpass_t *pas
|
|||
}
|
||||
else
|
||||
{
|
||||
BE_EnableShaderAttributes(attr);
|
||||
qglEnableClientState(GL_VERTEX_ARRAY);
|
||||
GenerateColourMods(pass);
|
||||
for (i = 0; i < pass->numMergedPasses; i++)
|
||||
{
|
||||
|
@ -2571,11 +2594,7 @@ static void BE_RenderMeshProgram(const shader_t *shader, const shaderpass_t *pas
|
|||
shaderstate.lastpasstmus = pass->numMergedPasses;
|
||||
GL_ApplyVertexPointer();
|
||||
}
|
||||
|
||||
BE_EnableShaderAttributes(attr);
|
||||
BE_SubmitMeshChain();
|
||||
|
||||
qglEnableClientState(GL_VERTEX_ARRAY);
|
||||
}
|
||||
|
||||
qboolean GLBE_LightCullModel(vec3_t org, model_t *model)
|
||||
|
@ -3329,18 +3348,18 @@ void GLBE_DrawWorld (qbyte *vis)
|
|||
BE_SelectMode(BEM_DEPTHDARK);
|
||||
else
|
||||
BE_SelectMode(BEM_STANDARD);
|
||||
checkglerror();
|
||||
|
||||
RSpeedRemark();
|
||||
GLBE_SubmitMeshes(true, batches);
|
||||
RSpeedEnd(RSPEED_WORLD);
|
||||
checkglerror();
|
||||
|
||||
#ifdef RTLIGHTS
|
||||
RSpeedRemark();
|
||||
BE_SelectEntity(&r_worldentity);
|
||||
Sh_DrawLights(vis);
|
||||
RSpeedEnd(RSPEED_STENCILSHADOWS);
|
||||
#endif
|
||||
checkglerror();
|
||||
|
||||
if (r_refdef.gfog_alpha)
|
||||
{
|
||||
BE_SelectMode(BEM_FOG);
|
||||
|
|
|
@ -383,10 +383,6 @@ TRACE(("dbg: GLDraw_ReInit: Allocating upload buffers\n"));
|
|||
|
||||
TRACE(("dbg: GLDraw_ReInit: PPL_LoadSpecularFragmentProgram\n"));
|
||||
GL_InitSceneProcessingShaders();
|
||||
|
||||
#ifdef PLUGINS
|
||||
Plug_DrawReloadImages();
|
||||
#endif
|
||||
}
|
||||
|
||||
void GLDraw_Init (void)
|
||||
|
|
|
@ -247,7 +247,7 @@ void GL_InitFisheyeFov(void)
|
|||
gl_FragColor = textureCube(source, tc);\
|
||||
}";
|
||||
|
||||
scenepp_fisheye_program = GLSlang_CreateProgram(NULL, vshader, fisheyefshader);
|
||||
scenepp_fisheye_program = GLSlang_CreateProgram("#version 110\n", NULL, vshader, fisheyefshader);
|
||||
if (scenepp_fisheye_program)
|
||||
{
|
||||
GLSlang_UseProgram(scenepp_fisheye_program);
|
||||
|
@ -256,7 +256,7 @@ void GL_InitFisheyeFov(void)
|
|||
GLSlang_UseProgram(0);
|
||||
}
|
||||
|
||||
scenepp_panorama_program = GLSlang_CreateProgram(NULL, vshader, panoramafshader);
|
||||
scenepp_panorama_program = GLSlang_CreateProgram("#version 110\n", NULL, vshader, panoramafshader);
|
||||
if (scenepp_panorama_program)
|
||||
{
|
||||
GLSlang_UseProgram(scenepp_panorama_program);
|
||||
|
|
|
@ -744,7 +744,7 @@ static void Shader_EntityMergable ( shader_t *shader, shaderpass_t *pass, char *
|
|||
|
||||
static void Shader_ProgAutoFields(program_t *prog, char **cvarfnames);
|
||||
/*program text is already loaded, this function parses the 'header' of it to see which permutations it provides, and how many times we need to recompile it*/
|
||||
static void Shader_LoadPermutations(program_t *prog, char *script, int qrtype)
|
||||
static void Shader_LoadPermutations(program_t *prog, char *script, int qrtype, int ver)
|
||||
{
|
||||
static char *permutationname[] =
|
||||
{
|
||||
|
@ -760,6 +760,7 @@ static void Shader_LoadPermutations(program_t *prog, char *script, int qrtype)
|
|||
unsigned int nopermutation = ~0u;
|
||||
int p, n, pn;
|
||||
char *end;
|
||||
char *vers;
|
||||
|
||||
char *cvarfnames[64];
|
||||
int cvarfcount = 0;
|
||||
|
@ -798,10 +799,25 @@ static void Shader_LoadPermutations(program_t *prog, char *script, int qrtype)
|
|||
}
|
||||
script = end;
|
||||
}
|
||||
else if (!strncmp(script, "!!ver", 5))
|
||||
{
|
||||
script += 5;
|
||||
while (*script == ' ' || *script == '\t')
|
||||
script++;
|
||||
end = script;
|
||||
while ((*end >= 'A' && *end <= 'Z') || (*end >= 'a' && *end <= 'z') || (*end >= '0' && *end <= '9') || *end == '_')
|
||||
end++;
|
||||
ver = strtol(script, NULL, 0);
|
||||
script = end;
|
||||
}
|
||||
else
|
||||
break;
|
||||
};
|
||||
|
||||
if (ver)
|
||||
vers = va("#version %u\n", ver);
|
||||
else
|
||||
vers = NULL;
|
||||
memset(prog->handle, 0, sizeof(*prog->handle)*PERMUTATIONS);
|
||||
for (p = 0; p < PERMUTATIONS; p++)
|
||||
{
|
||||
|
@ -822,7 +838,7 @@ static void Shader_LoadPermutations(program_t *prog, char *script, int qrtype)
|
|||
permutationdefines[pn++] = permutationname[n];
|
||||
}
|
||||
permutationdefines[pn++] = NULL;
|
||||
prog->handle[p].glsl = GLSlang_CreateProgram(permutationdefines, script, script);
|
||||
prog->handle[p].glsl = GLSlang_CreateProgram(vers, permutationdefines, script, script);
|
||||
}
|
||||
#endif
|
||||
#ifdef D3DQUAKE
|
||||
|
@ -871,8 +887,6 @@ struct sbuiltin_s
|
|||
/*glsl es shaders require precisions to be defined for fragment shader variables
|
||||
more precision for shaders would be a good candidate for a cvar */
|
||||
{QR_OPENGL/*ES*/, 100, "default2d",
|
||||
//SGX requires #version to come before defines
|
||||
//"#version 100\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_view;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -902,7 +916,6 @@ struct sbuiltin_s
|
|||
"#endif\n"
|
||||
},
|
||||
{QR_OPENGL, 110, "default2d",
|
||||
"#version 110\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_view;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -933,7 +946,6 @@ struct sbuiltin_s
|
|||
},
|
||||
{QR_OPENGL, 110, "defaultwall",
|
||||
"!!cvarf gl_overbright\n"
|
||||
"#version 110\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview, m_projection;\n"
|
||||
"attribute vec3 v_position;\n"
|
||||
|
@ -967,7 +979,6 @@ struct sbuiltin_s
|
|||
/*FIXME: this doesn't match the gl3 version*/
|
||||
{QR_OPENGL/*ES*/, 100, "defaultwall",
|
||||
"!!permu FULLBRIGHT\n"
|
||||
//"#version 100\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -1005,7 +1016,6 @@ struct sbuiltin_s
|
|||
},
|
||||
{QR_OPENGL/*ES*/, 100, "defaultwarp",
|
||||
"!!cvarf r_wateralpha\n"
|
||||
//"#version 100\n"
|
||||
"varying mediump vec2 tc;\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
|
@ -1037,7 +1047,6 @@ struct sbuiltin_s
|
|||
},
|
||||
{QR_OPENGL, 110, "defaultwarp",
|
||||
"!!cvarf r_wateralpha\n"
|
||||
"#version 110\n"
|
||||
"varying vec2 tc;\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
|
@ -1068,7 +1077,6 @@ struct sbuiltin_s
|
|||
"#endif\n"
|
||||
},
|
||||
{QR_OPENGL/*ES*/, 100, "defaultsky",
|
||||
//"#version 100\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -1111,7 +1119,6 @@ struct sbuiltin_s
|
|||
"#endif\n"
|
||||
},
|
||||
{QR_OPENGL, 110, "defaultsky",
|
||||
"#version 110\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -1156,7 +1163,6 @@ struct sbuiltin_s
|
|||
"!!permu FULLBRIGHT\n"
|
||||
"!!permu LOWER\n"
|
||||
"!!permu UPPER\n"
|
||||
//"#version 100\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -1220,7 +1226,6 @@ struct sbuiltin_s
|
|||
"!!permu FULLBRIGHT\n"
|
||||
"!!permu LOWER\n"
|
||||
"!!permu UPPER\n"
|
||||
//"#version 110\n"
|
||||
"#ifdef VERTEX_SHADER\n"
|
||||
"uniform mat4 m_modelview;\n"
|
||||
"uniform mat4 m_projection;\n"
|
||||
|
@ -1374,7 +1379,7 @@ static program_t *Shader_LoadGeneric(char *name, int qrtype)
|
|||
FS_LoadFile(name, &file);
|
||||
if (file)
|
||||
{
|
||||
Shader_LoadPermutations(&g->prog, file, qrtype);
|
||||
Shader_LoadPermutations(&g->prog, file, qrtype, 0);
|
||||
FS_FreeFile(file);
|
||||
|
||||
g->prog.refs++;
|
||||
|
@ -1398,7 +1403,7 @@ static program_t *Shader_LoadGeneric(char *name, int qrtype)
|
|||
continue;
|
||||
}
|
||||
#endif
|
||||
Shader_LoadPermutations(&g->prog, sbuiltins[i].body, sbuiltins[i].qrtype);
|
||||
Shader_LoadPermutations(&g->prog, sbuiltins[i].body, sbuiltins[i].qrtype, sbuiltins[i].apiver);
|
||||
|
||||
g->prog.refs++;
|
||||
return &g->prog;
|
||||
|
@ -1571,7 +1576,7 @@ static void Shader_SLProgramName (shader_t *shader, shaderpass_t *pass, char **p
|
|||
shader->prog = malloc(sizeof(*shader->prog));
|
||||
memset(shader->prog, 0, sizeof(*shader->prog));
|
||||
shader->prog->refs = 1;
|
||||
Shader_LoadPermutations(shader->prog, programbody, qrtype);
|
||||
Shader_LoadPermutations(shader->prog, programbody, qrtype, 0);
|
||||
|
||||
BZ_Free(programbody);
|
||||
}
|
||||
|
|
|
@ -151,6 +151,7 @@ FTEPFNGLLINKPROGRAMARBPROC qglLinkProgramARB;
|
|||
FTEPFNGLBINDATTRIBLOCATIONARBPROC qglBindAttribLocationARB;
|
||||
FTEPFNGLGETATTRIBLOCATIONARBPROC qglGetAttribLocationARB;
|
||||
FTEPFNGLVERTEXATTRIBPOINTER qglVertexAttribPointer;
|
||||
FTEPFNGLGETVERTEXATTRIBIV qglGetVertexAttribiv;
|
||||
FTEPFNGLENABLEVERTEXATTRIBARRAY qglEnableVertexAttribArray;
|
||||
FTEPFNGLDISABLEVERTEXATTRIBARRAY qglDisableVertexAttribArray;
|
||||
FTEPFNGLGETUNIFORMLOCATIONARBPROC qglGetUniformLocationARB;
|
||||
|
@ -572,6 +573,7 @@ void GL_CheckExtensions (void *(*getglfunction) (char *name), float ver)
|
|||
qglBindAttribLocationARB = (void *)getglext("glBindAttribLocationARB");
|
||||
qglGetAttribLocationARB = (void *)getglext("glGetAttribLocationARB");
|
||||
qglVertexAttribPointer = (void *)getglext("glVertexAttribPointerARB");
|
||||
qglGetVertexAttribiv = (void *)getglext("glGetVertexAttribivARB");
|
||||
qglEnableVertexAttribArray = (void *)getglext("glEnableVertexAttribArrayARB");
|
||||
qglDisableVertexAttribArray = (void *)getglext("glDisableVertexAttribArrayARB");
|
||||
qglGetUniformLocationARB = (void *)getglext("glGetUniformLocationARB");
|
||||
|
@ -605,6 +607,7 @@ void GL_CheckExtensions (void *(*getglfunction) (char *name), float ver)
|
|||
qglBindAttribLocationARB = (void *)getglext("glBindAttribLocation");
|
||||
qglGetAttribLocationARB = (void *)getglext("glGetAttribLocation");
|
||||
qglVertexAttribPointer = (void *)getglext("glVertexAttribPointer");
|
||||
qglGetVertexAttribiv = (void *)getglext("glGetVertexAttribiv");
|
||||
qglEnableVertexAttribArray = (void *)getglext("glEnableVertexAttribArray");
|
||||
qglDisableVertexAttribArray = (void *)getglext("glDisableVertexAttribArray");
|
||||
qglGetUniformLocationARB = (void *)getglext("glGetUniformLocation");
|
||||
|
@ -651,15 +654,18 @@ void GL_CheckExtensions (void *(*getglfunction) (char *name), float ver)
|
|||
|
||||
// glslang helper api function definitions
|
||||
// type should be GL_FRAGMENT_SHADER_ARB or GL_VERTEX_SHADER_ARB
|
||||
GLhandleARB GLSlang_CreateShader (char **precompilerconstants, char *shadersource, GLenum shadertype)
|
||||
GLhandleARB GLSlang_CreateShader (char *versionline, char **precompilerconstants, char *shadersource, GLenum shadertype)
|
||||
{
|
||||
GLhandleARB shader;
|
||||
GLint compiled;
|
||||
char str[1024];
|
||||
int loglen, i;
|
||||
char *prstrings[3+16];
|
||||
char *prstrings[4+16];
|
||||
int strings = 0;
|
||||
|
||||
if (versionline)
|
||||
prstrings[strings++] = versionline;
|
||||
|
||||
prstrings[strings++] = "#define ENGINE_"DISTRIBUTION"\n";
|
||||
switch (shadertype)
|
||||
{
|
||||
|
@ -768,7 +774,7 @@ bucket_t *compiledshadersbuckets[64];
|
|||
static hashtable_t compiledshaderstable;
|
||||
#endif
|
||||
|
||||
GLhandleARB GLSlang_CreateProgram(char **precompilerconstants, char *vert, char *frag)
|
||||
GLhandleARB GLSlang_CreateProgram(char *versionline, char **precompilerconstants, char *vert, char *frag)
|
||||
{
|
||||
GLhandleARB handle;
|
||||
GLhandleARB vs;
|
||||
|
@ -802,8 +808,8 @@ GLhandleARB GLSlang_CreateProgram(char **precompilerconstants, char *vert, char
|
|||
}
|
||||
#endif
|
||||
|
||||
vs = GLSlang_CreateShader(precompilerconstants, vert, GL_VERTEX_SHADER_ARB);
|
||||
fs = GLSlang_CreateShader(precompilerconstants, frag, GL_FRAGMENT_SHADER_ARB);
|
||||
vs = GLSlang_CreateShader(versionline, precompilerconstants, vert, GL_VERTEX_SHADER_ARB);
|
||||
fs = GLSlang_CreateShader(versionline, precompilerconstants, frag, GL_FRAGMENT_SHADER_ARB);
|
||||
|
||||
if (!vs || !fs)
|
||||
handle = 0;
|
||||
|
|
|
@ -94,6 +94,7 @@ typedef void (APIENTRYP FTEPFNGLVERTEXATTRIBPOINTER) (GLuint index, GLint siz
|
|||
typedef void (APIENTRYP FTEPFNGLENABLEVERTEXATTRIBARRAY) (GLuint index);
|
||||
typedef void (APIENTRYP FTEPFNGLDISABLEVERTEXATTRIBARRAY) (GLuint index);
|
||||
typedef GLint (APIENTRYP FTEPFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
|
||||
typedef void (APIENTRYP FTEPFNGLGETVERTEXATTRIBIV) (GLuint index, GLenum pname, GLint *params);
|
||||
typedef void (APIENTRYP FTEPFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
typedef void (APIENTRYP FTEPFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat *value);
|
||||
typedef void (APIENTRYP FTEPFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, GLfloat *value);
|
||||
|
@ -774,6 +775,7 @@ extern FTEPFNGLLINKPROGRAMARBPROC qglLinkProgramARB;
|
|||
extern FTEPFNGLBINDATTRIBLOCATIONARBPROC qglBindAttribLocationARB;
|
||||
extern FTEPFNGLGETATTRIBLOCATIONARBPROC qglGetAttribLocationARB;
|
||||
extern FTEPFNGLVERTEXATTRIBPOINTER qglVertexAttribPointer;
|
||||
extern FTEPFNGLGETVERTEXATTRIBIV qglGetVertexAttribiv;
|
||||
extern FTEPFNGLENABLEVERTEXATTRIBARRAY qglEnableVertexAttribArray;
|
||||
extern FTEPFNGLDISABLEVERTEXATTRIBARRAY qglDisableVertexAttribArray;
|
||||
extern FTEPFNGLGETUNIFORMLOCATIONARBPROC qglGetUniformLocationARB;
|
||||
|
@ -786,7 +788,7 @@ extern FTEPFNGLUNIFORM1IARBPROC qglUniform1iARB;
|
|||
extern FTEPFNGLUNIFORM1FARBPROC qglUniform1fARB;
|
||||
|
||||
//glslang helper api
|
||||
GLhandleARB GLSlang_CreateProgram (char **precompilerconstants, char *vert, char *frag);
|
||||
GLhandleARB GLSlang_CreateProgram(char *versionline, char **precompilerconstants, char *vert, char *frag);
|
||||
GLint GLSlang_GetUniformLocation (int prog, char *name);
|
||||
void GL_SelectProgram(int program);
|
||||
#define GLSlang_UseProgram(prog) GL_SelectProgram(prog)
|
||||
|
|
Loading…
Reference in a new issue