Replaced macro based selection of which shaders to use by default with DisplaySettings::setShaderHint() and OSG_SHADER=HINT=GL2|GL3|GLES2|GLES3|NONE controls
This commit is contained in:
@@ -40,13 +40,7 @@
|
||||
using namespace osg;
|
||||
|
||||
|
||||
#define SHADERS_GL3 (defined(OSG_GL3_AVAILABLE) || defined(OSG_GLES3_AVAILABLE))
|
||||
#define SHADERS_GL2 (!defined(OSG_GL_FIXED_FUNCTION_AVAILABLE) && !defined(OSG_GL3_AVAILABLE) && !defined(OSG_GLES3_AVAILABLE))
|
||||
#define IS_ES (defined(OSG_GLES2_AVAILABLE) || defined(OSG_GLES3_AVAILABLE))
|
||||
|
||||
#if SHADERS_GL3
|
||||
|
||||
#if !IS_ES
|
||||
#if (!defined(OSG_GLES2_AVAILABLE) && !defined(OSG_GLES3_AVAILABLE))
|
||||
#define GLSL_VERSION_STR "330 core"
|
||||
#else
|
||||
#define GLSL_VERSION_STR "300 es"
|
||||
@@ -88,10 +82,7 @@ static const char* gl3_FragmentShader = {
|
||||
"}\n"
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if SHADERS_GL2
|
||||
static const char* gl2_VertexShader = {
|
||||
"// gl2_VertexShader\n"
|
||||
"#ifdef GL_ES\n"
|
||||
@@ -120,7 +111,6 @@ static const char* gl2_FragmentShader = {
|
||||
" gl_FragColor = vertexColor * texture2D(baseTexture, texCoord);\n"
|
||||
"}\n"
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
extern osg::Texture2D* createDefaultTexture()
|
||||
@@ -702,31 +692,30 @@ void StateSet::setGlobalDefaults()
|
||||
|
||||
OSG_INFO<<"void StateSet::setGlobalDefaults()"<<std::endl;
|
||||
|
||||
#if SHADERS_GL3
|
||||
osg::DisplaySettings::ShaderHint shaderHint = osg::DisplaySettings::instance()->getShaderHint();
|
||||
if (shaderHint==osg::DisplaySettings::SHADER_GL3 || shaderHint==osg::DisplaySettings::SHADER_GLES3)
|
||||
{
|
||||
OSG_INFO<<" StateSet::setGlobalDefaults() Setting up GL3 compatible shaders"<<std::endl;
|
||||
|
||||
OSG_INFO<<" StateSet::setGlobalDefaults() Setting up GL3 compatible shaders"<<std::endl;
|
||||
|
||||
osg::ref_ptr<osg::Program> program = new osg::Program;
|
||||
program->addShader(new osg::Shader(osg::Shader::VERTEX, gl3_VertexShader));
|
||||
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, gl3_FragmentShader));
|
||||
setAttributeAndModes(program.get());
|
||||
setTextureAttribute(0, createDefaultTexture());
|
||||
addUniform(new osg::Uniform("baseTexture", 0));
|
||||
|
||||
#elif SHADERS_GL2
|
||||
|
||||
OSG_INFO<<" StateSet::setGlobalDefaults() Setting up GL2 compatible shaders"<<std::endl;
|
||||
|
||||
osg::ref_ptr<osg::Program> program = new osg::Program;
|
||||
program->addShader(new osg::Shader(osg::Shader::VERTEX, gl2_VertexShader));
|
||||
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, gl2_FragmentShader));
|
||||
setAttributeAndModes(program.get());
|
||||
setTextureAttribute(0, createDefaultTexture());
|
||||
addUniform(new osg::Uniform("baseTexture", 0));
|
||||
|
||||
#endif
|
||||
osg::ref_ptr<osg::Program> program = new osg::Program;
|
||||
program->addShader(new osg::Shader(osg::Shader::VERTEX, gl3_VertexShader));
|
||||
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, gl3_FragmentShader));
|
||||
setAttributeAndModes(program.get());
|
||||
setTextureAttribute(0, createDefaultTexture());
|
||||
addUniform(new osg::Uniform("baseTexture", 0));
|
||||
}
|
||||
else if (shaderHint==osg::DisplaySettings::SHADER_GL2 || shaderHint==osg::DisplaySettings::SHADER_GLES2)
|
||||
{
|
||||
|
||||
OSG_INFO<<" StateSet::setGlobalDefaults() Setting up GL2 compatible shaders"<<std::endl;
|
||||
|
||||
osg::ref_ptr<osg::Program> program = new osg::Program;
|
||||
program->addShader(new osg::Shader(osg::Shader::VERTEX, gl2_VertexShader));
|
||||
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, gl2_FragmentShader));
|
||||
setAttributeAndModes(program.get());
|
||||
setTextureAttribute(0, createDefaultTexture());
|
||||
addUniform(new osg::Uniform("baseTexture", 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user