X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscreen%2Fshader.cpp;h=c0da0e80657125ff88c54a5662a82b6347bfe6de;hb=3346bfc9a8e01a81bddab503664e0399d57e4d5e;hp=98284f9332d361a60e5d41c2cd77c2a685a45cb5;hpb=dc09a50472890ac706d3c76d8af34cc3682ada0c;p=simgear.git diff --git a/simgear/screen/shader.cpp b/simgear/screen/shader.cpp index 98284f93..c0da0e80 100644 --- a/simgear/screen/shader.cpp +++ b/simgear/screen/shader.cpp @@ -15,15 +15,20 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#ifdef HAVE_CONFIG_H +# include +#endif #include #include "shader.h" #include #include +#include +#include glVertexAttrib1dProc glVertexAttrib1dPtr = NULL; glVertexAttrib1dvProc glVertexAttrib1dvPtr = NULL; @@ -194,17 +199,17 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { if(*s == '<') { char *name = s; while(*s) { - if(strchr("> \t\n\r",*s)) break; + if(std::strchr("> \t\n\r",*s)) break; s++; } if(*s == '>') { // it`s shader *name++ = '\0'; *s++ = '\0'; - while(*s && strchr(" \t\n\r",*s)) s++; - if(vertex == NULL && !strcmp(name,"vertex")) vertex_src = s; - if(vertex && !strcmp(name,vertex)) vertex_src = s; - if(fragment == NULL && !strcmp(name,"fragment")) fragment_src = s; - if(fragment && !strcmp(name,fragment)) fragment_src = s; + while(*s && std::strchr(" \t\n\r",*s)) s++; + if(vertex == NULL && !std::strcmp(name,"vertex")) vertex_src = s; + if(vertex && !std::strcmp(name,vertex)) vertex_src = s; + if(fragment == NULL && !std::strcmp(name,"fragment")) fragment_src = s; + if(fragment && !std::strcmp(name,fragment)) fragment_src = s; } } s++; @@ -213,20 +218,20 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { if(vertex_src) { // ARB vertex program - if(VP_supported && !strncmp(vertex_src,"!!ARBvp1.0",10)) { + if(VP_supported && !std::strncmp(vertex_src,"!!ARBvp1.0",10)) { vertex_target = GL_VERTEX_PROGRAM_ARB; glGenProgramsPtr(1,&vertex_id); glBindProgramPtr(GL_VERTEX_PROGRAM_ARB,vertex_id); - glProgramStringPtr(GL_VERTEX_PROGRAM_ARB,GL_PROGRAM_FORMAT_ASCII_ARB,(GLsizei)strlen(vertex_src),vertex_src); + glProgramStringPtr(GL_VERTEX_PROGRAM_ARB,GL_PROGRAM_FORMAT_ASCII_ARB,(GLsizei)std::strlen(vertex_src),vertex_src); GLint pos = -1; glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB,&pos); if(pos != -1) { SG_LOG(SG_GL, SG_ALERT, "Shader::Shader(): vertex program error in " << name << " file\n" << get_error(vertex_src,pos)); return; } - char *var = strstr(vertex_src, "#var "); + char *var = std::strstr(vertex_src, "#var "); while( var ) { - char *eol = strchr( var + 1, '#'); + char *eol = std::strchr( var + 1, '#'); char *c2, *c3, *c4; c2 = strchr( var + 6, ' '); if( c2 ) { @@ -237,14 +242,14 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { c4 = strchr( c4 + 1, '['); if( c4 && c4 < eol) { char type[10], name[30]; - strncpy( type, var + 5, c2-var-5 ); + std::strncpy( type, var + 5, c2-var-5 ); type[c2-var-5] = 0; - strncpy( name, c2 + 1, c3-c2-2 ); + std::strncpy( name, c2 + 1, c3-c2-2 ); name[c3-c2-2] = 0; struct Parameter p; p.location = atoi( c4 + 1); p.length = 4; - if( ! strcmp(type, "float3") ) + if( ! std::strcmp(type, "float3") ) p.length = 3; else if( ! strcmp(type, "float") ) p.length = 1; @@ -260,7 +265,7 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { program = glCreateProgramObjectPtr(); - GLint length = (GLint)strlen(vertex_src); + GLint length = (GLint)std::strlen(vertex_src); GLhandleARB vertex = glCreateShaderObjectPtr(GL_VERTEX_SHADER_ARB); glShaderSourcePtr(vertex,1,(const GLcharARB**)&vertex_src,&length); glCompileShaderPtr(vertex); @@ -286,11 +291,11 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { if(fragment_src) { // ARB fragment program - if(FP_supported && !strncmp(fragment_src,"!!ARBfp1.0",10)) { + if(FP_supported && !std::strncmp(fragment_src,"!!ARBfp1.0",10)) { fragment_target = GL_FRAGMENT_PROGRAM_ARB; glGenProgramsPtr(1,&fragment_id); glBindProgramPtr(GL_FRAGMENT_PROGRAM_ARB,fragment_id); - glProgramStringPtr(GL_FRAGMENT_PROGRAM_ARB,GL_PROGRAM_FORMAT_ASCII_ARB,(GLsizei)strlen(fragment_src),fragment_src); + glProgramStringPtr(GL_FRAGMENT_PROGRAM_ARB,GL_PROGRAM_FORMAT_ASCII_ARB,(GLsizei)std::strlen(fragment_src),fragment_src); GLint pos = -1; glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB,&pos); if(pos != -1) { @@ -304,7 +309,7 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { fragment_target = GL_FRAGMENT_PROGRAM_NV; glGenProgramsNVPtr(1,&fragment_id); glBindProgramNVPtr(GL_FRAGMENT_PROGRAM_NV,fragment_id); - glLoadProgramNVPtr(GL_FRAGMENT_PROGRAM_NV,fragment_id,(GLsizei)strlen(fragment_src),(GLubyte*)fragment_src); + glLoadProgramNVPtr(GL_FRAGMENT_PROGRAM_NV,fragment_id,(GLsizei)std::strlen(fragment_src),(GLubyte*)fragment_src); GLint pos = -1; glGetIntegerv(GL_PROGRAM_ERROR_POSITION_NV,&pos); if(pos != -1) { @@ -318,7 +323,7 @@ Shader::Shader(const char *name,const char *vertex,const char *fragment) { if(!program) program = glCreateProgramObjectPtr(); - GLint length = (GLint)strlen(fragment_src); + GLint length = (GLint)std::strlen(fragment_src); GLhandleARB fragment = glCreateShaderObjectPtr(GL_FRAGMENT_SHADER_ARB); glShaderSourcePtr(fragment,1,(const GLcharARB**)&fragment_src,&length); glCompileShaderPtr(fragment); @@ -395,11 +400,11 @@ const char *Shader::get_glsl_error() { void Shader::getParameter(const char *name,Parameter *parameter) { if( program ) { char buf[1024]; - strcpy(buf,name); - char *s = strchr(buf,':'); + std::strcpy(buf,name); + char *s = std::strchr(buf,':'); if(s) { *s++ = '\0'; - parameter->length = atoi(s); + parameter->length = std::atoi(s); } else { parameter->length = 4; } @@ -480,7 +485,7 @@ void Shader::bind(const float *v,...) { } const float *value = v; va_list args; - va_start(args,value); + va_start(args,v); for(int i = 0; i < (int)parameters.size(); i++) { if( vertex_target ) { glProgramLocalParameter4fvPtr( vertex_target, parameters[i].location, value); @@ -546,7 +551,7 @@ void Shader::setParameter(const char *name,const float *value) { void Shader::setParameters(const float *v,...) { const float *value = v; va_list args; - va_start(args,value); + va_start(args,v); for(int i = 0; i < (int)parameters.size(); i++) { if( vertex_target ) { glProgramLocalParameter4fvPtr( vertex_target, parameters[i].location, value);