#232: resurrect the "point sprites for runway lights" switch
Automatic GL/OSG feature detection still not working, since we don't have a "context" - but at least the manual switch works (on start-up only).
This commit is contained in:
@@ -204,21 +204,26 @@ Effect* getLightEffect(float size, const Vec3& attenuation,
|
|||||||
Pass *combinedPass = clone(spritePass, CopyOp::SHALLOW_COPY);
|
Pass *combinedPass = clone(spritePass, CopyOp::SHALLOW_COPY);
|
||||||
combinedPass->setAttributeAndModes(point);
|
combinedPass->setAttributeAndModes(point);
|
||||||
Effect* effect = new Effect;
|
Effect* effect = new Effect;
|
||||||
std::vector<std::string> combinedExtensions;
|
|
||||||
combinedExtensions.push_back("GL_ARB_point_sprite");
|
|
||||||
combinedExtensions.push_back("GL_ARB_point_parameters");
|
|
||||||
Technique* combinedTniq = new Technique;
|
|
||||||
combinedTniq->passes.push_back(combinedPass);
|
|
||||||
combinedTniq->setGLExtensionsPred(2.0, combinedExtensions);
|
|
||||||
effect->techniques.push_back(combinedTniq);
|
|
||||||
std::vector<std::string> spriteExtensions;
|
|
||||||
spriteExtensions.push_back(combinedExtensions.front());
|
|
||||||
Technique* spriteTniq = new Technique;
|
|
||||||
spriteTniq->passes.push_back(spritePass);
|
|
||||||
spriteTniq->setGLExtensionsPred(2.0, spriteExtensions);
|
|
||||||
effect->techniques.push_back(spriteTniq);
|
|
||||||
std::vector<std::string> parameterExtensions;
|
std::vector<std::string> parameterExtensions;
|
||||||
parameterExtensions.push_back(combinedExtensions.back());
|
|
||||||
|
if (SGSceneFeatures::instance()->getEnablePointSpriteLights())
|
||||||
|
{
|
||||||
|
std::vector<std::string> combinedExtensions;
|
||||||
|
combinedExtensions.push_back("GL_ARB_point_sprite");
|
||||||
|
combinedExtensions.push_back("GL_ARB_point_parameters");
|
||||||
|
Technique* combinedTniq = new Technique;
|
||||||
|
combinedTniq->passes.push_back(combinedPass);
|
||||||
|
combinedTniq->setGLExtensionsPred(2.0, combinedExtensions);
|
||||||
|
effect->techniques.push_back(combinedTniq);
|
||||||
|
std::vector<std::string> spriteExtensions;
|
||||||
|
spriteExtensions.push_back(combinedExtensions.front());
|
||||||
|
Technique* spriteTniq = new Technique;
|
||||||
|
spriteTniq->passes.push_back(spritePass);
|
||||||
|
spriteTniq->setGLExtensionsPred(2.0, spriteExtensions);
|
||||||
|
effect->techniques.push_back(spriteTniq);
|
||||||
|
parameterExtensions.push_back(combinedExtensions.back());
|
||||||
|
}
|
||||||
|
|
||||||
Technique* parameterTniq = new Technique;
|
Technique* parameterTniq = new Technique;
|
||||||
parameterTniq->passes.push_back(attenuationPass);
|
parameterTniq->passes.push_back(attenuationPass);
|
||||||
parameterTniq->setGLExtensionsPred(1.4, parameterExtensions);
|
parameterTniq->setGLExtensionsPred(1.4, parameterExtensions);
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ public:
|
|||||||
|
|
||||||
void setEnablePointSpriteLights(bool enable)
|
void setEnablePointSpriteLights(bool enable)
|
||||||
{ _pointSpriteLights = enable; }
|
{ _pointSpriteLights = enable; }
|
||||||
|
bool getEnablePointSpriteLights() const
|
||||||
|
{
|
||||||
|
return _pointSpriteLights;
|
||||||
|
}
|
||||||
bool getEnablePointSpriteLights(unsigned contextId) const
|
bool getEnablePointSpriteLights(unsigned contextId) const
|
||||||
{
|
{
|
||||||
if (!_pointSpriteLights)
|
if (!_pointSpriteLights)
|
||||||
|
|||||||
Reference in New Issue
Block a user