mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-02-15 08:31:03 +00:00
tear out glsl stuff
This commit is contained in:
parent
d1bd72037e
commit
9a0d529195
4 changed files with 23 additions and 240 deletions
|
@ -368,7 +368,7 @@ void GL_MakeAliasModelDisplayLists_VBO (void)
|
|||
int maxverts_vbo;
|
||||
trivertx_t *verts;
|
||||
|
||||
if (!gl_glsl_able)
|
||||
if (!gl_arb_vp_able)
|
||||
return;
|
||||
|
||||
// ericw -- first, copy the verts onto the hunk
|
||||
|
@ -457,7 +457,7 @@ void GLMesh_LoadVertexBuffers (void)
|
|||
int totalindexes = 0;
|
||||
int totalvbosize = 0;
|
||||
|
||||
if (!gl_glsl_able)
|
||||
if (!gl_arb_vp_able)
|
||||
return;
|
||||
|
||||
// pass 1 - count the sizes we need
|
||||
|
|
|
@ -95,7 +95,7 @@ qboolean gl_anisotropy_able = false; //johnfitz
|
|||
float gl_max_anisotropy; //johnfitz
|
||||
qboolean gl_texture_NPOT = false; //ericw
|
||||
qboolean gl_vbo_able = false; //ericw
|
||||
qboolean gl_glsl_able = false; //ericw
|
||||
qboolean gl_arb_vp_able = false; //ericw
|
||||
GLint gl_max_texture_units = 0; //ericw
|
||||
|
||||
PFNGLMULTITEXCOORD2FARBPROC GL_MTexCoord2fFunc = NULL; //johnfitz
|
||||
|
@ -107,26 +107,6 @@ PFNGLBUFFERSUBDATAARBPROC GL_BufferSubDataFunc = NULL; //ericw
|
|||
PFNGLDELETEBUFFERSARBPROC GL_DeleteBuffersFunc = NULL; //ericw
|
||||
PFNGLGENBUFFERSARBPROC GL_GenBuffersFunc = NULL; //ericw
|
||||
|
||||
QS_PFNGLCREATESHADERPROC GL_CreateShaderFunc = NULL; //ericw
|
||||
QS_PFNGLSHADERSOURCEPROC GL_ShaderSourceFunc = NULL; //ericw
|
||||
QS_PFNGLCOMPILESHADERPROC GL_CompileShaderFunc = NULL; //ericw
|
||||
QS_PFNGLGETSHADERIVPROC GL_GetShaderivFunc = NULL; //ericw
|
||||
QS_PFNGLGETSHADERINFOLOGPROC GL_GetShaderInfoLogFunc = NULL; //ericw
|
||||
QS_PFNGLGETPROGRAMIVPROC GL_GetProgramivFunc = NULL; //ericw
|
||||
QS_PFNGLGETPROGRAMINFOLOGPROC GL_GetProgramInfoLogFunc = NULL; //ericw
|
||||
QS_PFNGLCREATEPROGRAMPROC GL_CreateProgramFunc = NULL; //ericw
|
||||
QS_PFNGLATTACHSHADERPROC GL_AttachShaderFunc = NULL; //ericw
|
||||
QS_PFNGLLINKPROGRAMPROC GL_LinkProgramFunc = NULL; //ericw
|
||||
QS_PFNGLUSEPROGRAMPROC GL_UseProgramFunc = NULL; //ericw
|
||||
QS_PFNGLGETATTRIBLOCATIONPROC GL_GetAttribLocationFunc = NULL; //ericw
|
||||
QS_PFNGLVERTEXATTRIBPOINTERPROC GL_VertexAttribPointerFunc = NULL; //ericw
|
||||
QS_PFNGLENABLEVERTEXATTRIBARRAYPROC GL_EnableVertexAttribArrayFunc = NULL; //ericw
|
||||
QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC GL_DisableVertexAttribArrayFunc = NULL; //ericw
|
||||
QS_PFNGLGETUNIFORMLOCATIONPROC GL_GetUniformLocationFunc = NULL; //ericw
|
||||
QS_PFNGLUNIFORM1FPROC GL_Uniform1fFunc = NULL; //ericw
|
||||
QS_PFNGLUNIFORM3FPROC GL_Uniform3fFunc = NULL; //ericw
|
||||
QS_PFNGLUNIFORM4FPROC GL_Uniform4fFunc = NULL; //ericw
|
||||
|
||||
// vertex/fragment program
|
||||
PFNGLBINDPROGRAMARBPROC qglBindProgramARB = NULL;
|
||||
PFNGLDELETEPROGRAMSARBPROC qglDeleteProgramsARB = NULL;
|
||||
|
@ -1039,60 +1019,7 @@ static void GL_CheckExtensions (void)
|
|||
Con_Warning ("texture_non_power_of_two not supported\n");
|
||||
}
|
||||
|
||||
// GLSL
|
||||
//
|
||||
if (COM_CheckParm("-noglsl"))
|
||||
Con_Warning ("GLSL disabled at command line\n");
|
||||
else
|
||||
{
|
||||
GL_CreateShaderFunc = (QS_PFNGLCREATESHADERPROC) SDL_GL_GetProcAddress("glCreateShader");
|
||||
GL_ShaderSourceFunc = (QS_PFNGLSHADERSOURCEPROC) SDL_GL_GetProcAddress("glShaderSource");
|
||||
GL_CompileShaderFunc = (QS_PFNGLCOMPILESHADERPROC) SDL_GL_GetProcAddress("glCompileShader");
|
||||
GL_GetShaderivFunc = (QS_PFNGLGETSHADERIVPROC) SDL_GL_GetProcAddress("glGetShaderiv");
|
||||
GL_GetShaderInfoLogFunc = (QS_PFNGLGETSHADERINFOLOGPROC) SDL_GL_GetProcAddress("glGetShaderInfoLog");
|
||||
GL_GetProgramivFunc = (QS_PFNGLGETPROGRAMIVPROC) SDL_GL_GetProcAddress("glGetProgramiv");
|
||||
GL_GetProgramInfoLogFunc = (QS_PFNGLGETPROGRAMINFOLOGPROC) SDL_GL_GetProcAddress("glGetProgramInfoLog");
|
||||
GL_CreateProgramFunc = (QS_PFNGLCREATEPROGRAMPROC) SDL_GL_GetProcAddress("glCreateProgram");
|
||||
GL_AttachShaderFunc = (QS_PFNGLATTACHSHADERPROC) SDL_GL_GetProcAddress("glAttachShader");
|
||||
GL_LinkProgramFunc = (QS_PFNGLLINKPROGRAMPROC) SDL_GL_GetProcAddress("glLinkProgram");
|
||||
GL_UseProgramFunc = (QS_PFNGLUSEPROGRAMPROC) SDL_GL_GetProcAddress("glUseProgram");
|
||||
GL_GetAttribLocationFunc = (QS_PFNGLGETATTRIBLOCATIONPROC) SDL_GL_GetProcAddress("glGetAttribLocation");
|
||||
GL_VertexAttribPointerFunc = (QS_PFNGLVERTEXATTRIBPOINTERPROC) SDL_GL_GetProcAddress("glVertexAttribPointer");
|
||||
GL_EnableVertexAttribArrayFunc = (QS_PFNGLENABLEVERTEXATTRIBARRAYPROC) SDL_GL_GetProcAddress("glEnableVertexAttribArray");
|
||||
GL_DisableVertexAttribArrayFunc = (QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC) SDL_GL_GetProcAddress("glDisableVertexAttribArray");
|
||||
GL_GetUniformLocationFunc = (QS_PFNGLGETUNIFORMLOCATIONPROC) SDL_GL_GetProcAddress("glGetUniformLocation");
|
||||
GL_Uniform1fFunc = (QS_PFNGLUNIFORM1FPROC) SDL_GL_GetProcAddress("glUniform1f");
|
||||
GL_Uniform3fFunc = (QS_PFNGLUNIFORM3FPROC) SDL_GL_GetProcAddress("glUniform3f");
|
||||
GL_Uniform4fFunc = (QS_PFNGLUNIFORM4FPROC) SDL_GL_GetProcAddress("glUniform4f");
|
||||
|
||||
if (GL_CreateShaderFunc &&
|
||||
GL_ShaderSourceFunc &&
|
||||
GL_CompileShaderFunc &&
|
||||
GL_GetShaderivFunc &&
|
||||
GL_GetShaderInfoLogFunc &&
|
||||
GL_GetProgramivFunc &&
|
||||
GL_GetProgramInfoLogFunc &&
|
||||
GL_CreateProgramFunc &&
|
||||
GL_AttachShaderFunc &&
|
||||
GL_LinkProgramFunc &&
|
||||
GL_UseProgramFunc &&
|
||||
GL_GetAttribLocationFunc &&
|
||||
GL_VertexAttribPointerFunc &&
|
||||
GL_EnableVertexAttribArrayFunc &&
|
||||
GL_DisableVertexAttribArrayFunc &&
|
||||
GL_GetUniformLocationFunc &&
|
||||
GL_Uniform1fFunc &&
|
||||
GL_Uniform3fFunc &&
|
||||
GL_Uniform4fFunc)
|
||||
{
|
||||
Con_Printf("FOUND: GLSL\n");
|
||||
gl_glsl_able = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Con_Warning ("GLSL not available\n");
|
||||
}
|
||||
}
|
||||
// gl_arb_vp
|
||||
|
||||
if (!(qglBindProgramARB = (PFNGLBINDPROGRAMARBPROC) SDL_GL_GetProcAddress ("glBindProgramARB"))) return;
|
||||
if (!(qglDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC) SDL_GL_GetProcAddress ("glDeleteProgramsARB"))) return;
|
||||
|
@ -1116,6 +1043,9 @@ static void GL_CheckExtensions (void)
|
|||
if (!(qglVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC) SDL_GL_GetProcAddress ("glVertexAttribPointerARB"))) return;
|
||||
if (!(qglEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) SDL_GL_GetProcAddress ("glEnableVertexAttribArrayARB"))) return;
|
||||
if (!(qglDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) SDL_GL_GetProcAddress ("glDisableVertexAttribArrayARB"))) return;
|
||||
|
||||
Con_Printf("FOUND: gl_arb_vp\n");
|
||||
gl_arb_vp_able = true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -175,47 +175,7 @@ extern qboolean gl_vbo_able;
|
|||
|
||||
//ericw -- GLSL
|
||||
|
||||
// SDL 1.2 has a bug where it doesn't provide these typedefs on OS X!
|
||||
typedef GLuint (APIENTRYP QS_PFNGLCREATESHADERPROC) (GLenum type);
|
||||
typedef void (APIENTRYP QS_PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
||||
typedef void (APIENTRYP QS_PFNGLCOMPILESHADERPROC) (GLuint shader);
|
||||
typedef void (APIENTRYP QS_PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
|
||||
typedef void (APIENTRYP QS_PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef void (APIENTRYP QS_PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
|
||||
typedef void (APIENTRYP QS_PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
typedef GLuint (APIENTRYP QS_PFNGLCREATEPROGRAMPROC) (void);
|
||||
typedef void (APIENTRYP QS_PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
|
||||
typedef void (APIENTRYP QS_PFNGLLINKPROGRAMPROC) (GLuint program);
|
||||
typedef void (APIENTRYP QS_PFNGLUSEPROGRAMPROC) (GLuint program);
|
||||
typedef GLint (APIENTRYP QS_PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (APIENTRYP QS_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
||||
typedef void (APIENTRYP QS_PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef void (APIENTRYP QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
||||
typedef GLint (APIENTRYP QS_PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
|
||||
typedef void (APIENTRYP QS_PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
|
||||
typedef void (APIENTRYP QS_PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
|
||||
typedef void (APIENTRYP QS_PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
|
||||
extern QS_PFNGLCREATESHADERPROC GL_CreateShaderFunc;
|
||||
extern QS_PFNGLSHADERSOURCEPROC GL_ShaderSourceFunc;
|
||||
extern QS_PFNGLCOMPILESHADERPROC GL_CompileShaderFunc;
|
||||
extern QS_PFNGLGETSHADERIVPROC GL_GetShaderivFunc;
|
||||
extern QS_PFNGLGETSHADERINFOLOGPROC GL_GetShaderInfoLogFunc;
|
||||
extern QS_PFNGLGETPROGRAMIVPROC GL_GetProgramivFunc;
|
||||
extern QS_PFNGLGETPROGRAMINFOLOGPROC GL_GetProgramInfoLogFunc;
|
||||
extern QS_PFNGLCREATEPROGRAMPROC GL_CreateProgramFunc;
|
||||
extern QS_PFNGLATTACHSHADERPROC GL_AttachShaderFunc;
|
||||
extern QS_PFNGLLINKPROGRAMPROC GL_LinkProgramFunc;
|
||||
extern QS_PFNGLUSEPROGRAMPROC GL_UseProgramFunc;
|
||||
extern QS_PFNGLGETATTRIBLOCATIONPROC GL_GetAttribLocationFunc;
|
||||
extern QS_PFNGLVERTEXATTRIBPOINTERPROC GL_VertexAttribPointerFunc;
|
||||
extern QS_PFNGLENABLEVERTEXATTRIBARRAYPROC GL_EnableVertexAttribArrayFunc;
|
||||
extern QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC GL_DisableVertexAttribArrayFunc;
|
||||
extern QS_PFNGLGETUNIFORMLOCATIONPROC GL_GetUniformLocationFunc;
|
||||
extern QS_PFNGLUNIFORM1FPROC GL_Uniform1fFunc;
|
||||
extern QS_PFNGLUNIFORM3FPROC GL_Uniform3fFunc;
|
||||
extern QS_PFNGLUNIFORM4FPROC GL_Uniform4fFunc;
|
||||
extern qboolean gl_glsl_able;
|
||||
extern qboolean gl_arb_vp_able;
|
||||
// ericw --
|
||||
|
||||
// vertex/fragment program
|
||||
|
|
|
@ -173,125 +173,16 @@ void GL_DrawAliasFrame_GLSL (aliashdr_t *paliashdr, lerpdata_t lerpdata)
|
|||
qglBindProgramARB (GL_VERTEX_PROGRAM_ARB, shader);
|
||||
glEnable( GL_VERTEX_PROGRAM_ARB );
|
||||
//
|
||||
|
||||
// ericw -- shader
|
||||
#if 0
|
||||
static GLuint shader;
|
||||
static GLuint program;
|
||||
static GLuint blendLoc;
|
||||
static GLuint shadevectorLoc;
|
||||
static GLuint lightColorLoc;
|
||||
|
||||
static GLint pose1VertexAttrIndex;
|
||||
static GLint pose1NormalAttrIndex;
|
||||
static GLint pose2VertexAttrIndex;
|
||||
static GLint pose2NormalAttrIndex;
|
||||
|
||||
if (shader == 0)
|
||||
{
|
||||
const GLchar *source = \
|
||||
"#version 110\n"
|
||||
"\n"
|
||||
"uniform float Blend;\n"
|
||||
"uniform vec3 ShadeVector;\n"
|
||||
"uniform vec4 LightColor;\n"
|
||||
"attribute vec4 Pose1Vert;\n"
|
||||
"attribute vec3 Pose1Normal;\n"
|
||||
"attribute vec4 Pose2Vert;\n"
|
||||
"attribute vec3 Pose2Normal;\n"
|
||||
"float r_avertexnormal_dot(vec3 vertexnormal) // from MH \n"
|
||||
"{\n"
|
||||
" float dot = dot(vertexnormal, ShadeVector);\n"
|
||||
" // wtf - this reproduces anorm_dots within as reasonable a degree of tolerance as the >= 0 case\n"
|
||||
" if (dot < 0.0)\n"
|
||||
" return 1.0 + dot * (13.0 / 44.0);\n"
|
||||
" else\n"
|
||||
" return 1.0 + dot;\n"
|
||||
"}\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" gl_TexCoord[0] = gl_MultiTexCoord0;\n"
|
||||
" gl_TexCoord[1] = gl_MultiTexCoord0;\n"
|
||||
" vec4 lerpedVert = mix(Pose1Vert, Pose2Vert, Blend);\n"
|
||||
" gl_Position = gl_ModelViewProjectionMatrix * lerpedVert;\n"
|
||||
" float dot1 = r_avertexnormal_dot(Pose1Normal);\n"
|
||||
" float dot2 = r_avertexnormal_dot(Pose2Normal);\n"
|
||||
" gl_FrontColor = LightColor * vec4(vec3(mix(dot1, dot2, Blend)), 1.0);\n"
|
||||
" // fog\n"
|
||||
" vec3 ecPosition = vec3(gl_ModelViewMatrix * lerpedVert);\n"
|
||||
" gl_FogFragCoord = abs(ecPosition.z);\n"
|
||||
"}\n";
|
||||
|
||||
shader = GL_CreateShaderFunc(GL_VERTEX_SHADER);
|
||||
GL_ShaderSourceFunc(shader, 1, &source, NULL);
|
||||
GL_CompileShaderFunc(shader);
|
||||
|
||||
GLint status;
|
||||
GL_GetShaderivFunc(shader, GL_COMPILE_STATUS, &status);
|
||||
|
||||
if (status != GL_TRUE)
|
||||
{
|
||||
static char infolog[65536];
|
||||
GL_GetShaderInfoLogFunc (shader, 65536, NULL, infolog);
|
||||
|
||||
printf("Shader info log: %s\n", infolog);
|
||||
Sys_Error("Shader failed to compile");
|
||||
}
|
||||
|
||||
// create program
|
||||
program = GL_CreateProgramFunc();
|
||||
GL_AttachShaderFunc(program, shader);
|
||||
GL_LinkProgramFunc(program);
|
||||
|
||||
GL_GetProgramivFunc(program, GL_LINK_STATUS, &status);
|
||||
|
||||
if (status != GL_TRUE)
|
||||
{
|
||||
Sys_Error("Program failed to link");
|
||||
}
|
||||
|
||||
// get uniform location
|
||||
|
||||
blendLoc = GL_GetUniformLocationFunc(program, "Blend");
|
||||
if (blendLoc == -1)
|
||||
{
|
||||
Sys_Error("GL_GetUniformLocationFunc Blend failed");
|
||||
}
|
||||
|
||||
shadevectorLoc = GL_GetUniformLocationFunc(program, "ShadeVector");
|
||||
if (shadevectorLoc == -1)
|
||||
{
|
||||
Sys_Error("GL_GetUniformLocationFunc shadevector failed");
|
||||
}
|
||||
|
||||
lightColorLoc = GL_GetUniformLocationFunc(program, "LightColor");
|
||||
if (lightColorLoc == -1)
|
||||
{
|
||||
Sys_Error("GL_GetUniformLocationFunc LightColor failed");
|
||||
}
|
||||
|
||||
// get attributes
|
||||
|
||||
pose1VertexAttrIndex = GL_GetAttribLocationFunc(program, "Pose1Vert");
|
||||
pose1NormalAttrIndex = GL_GetAttribLocationFunc(program, "Pose1Normal");
|
||||
|
||||
pose2VertexAttrIndex = GL_GetAttribLocationFunc(program, "Pose2Vert");
|
||||
pose2NormalAttrIndex = GL_GetAttribLocationFunc(program, "Pose2Normal");
|
||||
}
|
||||
|
||||
GL_UseProgramFunc(program);
|
||||
#endif
|
||||
// ericw --
|
||||
|
||||
// ericw -- bind it and stuff
|
||||
GL_BindBufferFunc (GL_ARRAY_BUFFER, r_meshvbo);
|
||||
GL_BindBufferFunc (GL_ELEMENT_ARRAY_BUFFER, r_meshindexesvbo);
|
||||
|
||||
GL_VertexAttribPointerFunc (pose1VertexAttrIndex, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof (meshxyz_t), GLARB_GetXYZOffset (paliashdr, lerpdata.pose1));
|
||||
GL_EnableVertexAttribArrayFunc (pose1VertexAttrIndex);
|
||||
qglVertexAttribPointerARB (pose1VertexAttrIndex, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof (meshxyz_t), GLARB_GetXYZOffset (paliashdr, lerpdata.pose1));
|
||||
qglEnableVertexAttribArrayARB (pose1VertexAttrIndex);
|
||||
|
||||
GL_VertexAttribPointerFunc (pose2VertexAttrIndex, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof (meshxyz_t), GLARB_GetXYZOffset (paliashdr, lerpdata.pose2));
|
||||
GL_EnableVertexAttribArrayFunc (pose2VertexAttrIndex);
|
||||
qglVertexAttribPointerARB (pose2VertexAttrIndex, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof (meshxyz_t), GLARB_GetXYZOffset (paliashdr, lerpdata.pose2));
|
||||
qglEnableVertexAttribArrayARB (pose2VertexAttrIndex);
|
||||
|
||||
GL_ClientActiveTextureFunc (GL_TEXTURE0_ARB);
|
||||
glTexCoordPointer(2, GL_FLOAT, 0, (void *)(intptr_t)currententity->model->vbostofs);
|
||||
|
@ -303,11 +194,11 @@ void GL_DrawAliasFrame_GLSL (aliashdr_t *paliashdr, lerpdata_t lerpdata)
|
|||
GL_ClientActiveTextureFunc (GL_TEXTURE2_ARB);
|
||||
glDisableClientState (GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
GL_VertexAttribPointerFunc (pose1NormalAttrIndex, 3, GL_FLOAT, GL_FALSE, sizeof (meshxyz_t), GLARB_GetNormalOffset (paliashdr, lerpdata.pose1));
|
||||
GL_EnableVertexAttribArrayFunc (pose1NormalAttrIndex);
|
||||
qglVertexAttribPointerARB (pose1NormalAttrIndex, 3, GL_FLOAT, GL_FALSE, sizeof (meshxyz_t), GLARB_GetNormalOffset (paliashdr, lerpdata.pose1));
|
||||
qglEnableVertexAttribArrayARB (pose1NormalAttrIndex);
|
||||
|
||||
GL_VertexAttribPointerFunc (pose2NormalAttrIndex, 3, GL_FLOAT, GL_FALSE, sizeof (meshxyz_t), GLARB_GetNormalOffset (paliashdr, lerpdata.pose2));
|
||||
GL_EnableVertexAttribArrayFunc (pose2NormalAttrIndex);
|
||||
qglVertexAttribPointerARB (pose2NormalAttrIndex, 3, GL_FLOAT, GL_FALSE, sizeof (meshxyz_t), GLARB_GetNormalOffset (paliashdr, lerpdata.pose2));
|
||||
qglEnableVertexAttribArrayARB (pose2NormalAttrIndex);
|
||||
|
||||
// set uniforms
|
||||
|
||||
|
@ -321,8 +212,8 @@ void GL_DrawAliasFrame_GLSL (aliashdr_t *paliashdr, lerpdata_t lerpdata)
|
|||
|
||||
// clean up
|
||||
|
||||
GL_DisableVertexAttribArrayFunc(pose1VertexAttrIndex);
|
||||
GL_DisableVertexAttribArrayFunc(pose2VertexAttrIndex);
|
||||
qglDisableVertexAttribArrayARB(pose1VertexAttrIndex);
|
||||
qglDisableVertexAttribArrayARB(pose2VertexAttrIndex);
|
||||
|
||||
GL_ClientActiveTextureFunc(GL_TEXTURE0_ARB);
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
@ -333,8 +224,8 @@ void GL_DrawAliasFrame_GLSL (aliashdr_t *paliashdr, lerpdata_t lerpdata)
|
|||
GL_ClientActiveTextureFunc(GL_TEXTURE2_ARB);
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
GL_DisableVertexAttribArrayFunc(pose1NormalAttrIndex);
|
||||
GL_DisableVertexAttribArrayFunc(pose2NormalAttrIndex);
|
||||
qglDisableVertexAttribArrayARB(pose1NormalAttrIndex);
|
||||
qglDisableVertexAttribArrayARB(pose2NormalAttrIndex);
|
||||
|
||||
glDisable(GL_VERTEX_PROGRAM_ARB);
|
||||
|
||||
|
@ -357,12 +248,14 @@ void GL_DrawAliasFrame (aliashdr_t *paliashdr, lerpdata_t lerpdata)
|
|||
qboolean lerping;
|
||||
|
||||
// call fast path if possible
|
||||
if (gl_glsl_able && !r_drawflat_cheatsafe && shading)
|
||||
if (gl_arb_vp_able && !r_drawflat_cheatsafe && shading)
|
||||
{
|
||||
GL_DrawAliasFrame_GLSL (paliashdr, lerpdata);
|
||||
return;
|
||||
}
|
||||
|
||||
Sys_Error("didn't use fast path");
|
||||
|
||||
if (lerpdata.pose1 != lerpdata.pose2)
|
||||
{
|
||||
lerping = true;
|
||||
|
|
Loading…
Reference in a new issue