X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Ftgdb%2Fpt_lights.cxx;h=274a4e1873054e609192e9b7f8bd157e4e97be45;hb=7e7ce2f38e87d6244e05730fa4382da088bb25f1;hp=8963b3be582b7fe083e7af099588f35e1074b1da;hpb=560c100484e3678770c9589e6067d627ec5554e5;p=simgear.git diff --git a/simgear/scene/tgdb/pt_lights.cxx b/simgear/scene/tgdb/pt_lights.cxx index 8963b3be..274a4e18 100644 --- a/simgear/scene/tgdb/pt_lights.cxx +++ b/simgear/scene/tgdb/pt_lights.cxx @@ -50,14 +50,21 @@ #include +#include +#include + #include #include -#include -#include +#include #include #include "SGVasiDrawable.hxx" +using OpenThreads::Mutex; +using OpenThreads::ScopedLock; + +using namespace simgear; + static void setPointSpriteImage(unsigned char* data, unsigned log2resolution, unsigned charsPerPixel) @@ -120,6 +127,8 @@ getPointSpriteImage(int logResolution) return image; } +static Mutex lightMutex; + static osg::Texture2D* gen_standard_light_sprite(void) { @@ -128,8 +137,7 @@ gen_standard_light_sprite(void) if (texture.valid()) return texture.get(); - static SGMutex mutex; - SGGuard guard(mutex); + ScopedLock lock(lightMutex); if (texture.valid()) return texture.get(); @@ -238,7 +246,7 @@ SGLightFactory::getLight(const SGLightBin::Light& light) geometry->addPrimitiveSet(drawArrays); osg::StateSet* stateSet = geometry->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF); osg::BlendFunc* blendFunc = new osg::BlendFunc; @@ -291,7 +299,7 @@ SGLightFactory::getLight(const SGDirectionalLightBin::Light& light) geometry->addPrimitiveSet(drawArrays); osg::StateSet* stateSet = geometry->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); osg::Material* material = new osg::Material; material->setColorMode(osg::Material::OFF); @@ -352,7 +360,7 @@ SGLightFactory::getLights(const SGLightBin& lights, unsigned inc, float alphaOff geometry->addPrimitiveSet(drawArrays); osg::StateSet* stateSet = geometry->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF); @@ -407,7 +415,7 @@ SGLightFactory::getLights(const SGDirectionalLightBin& lights) geometry->addPrimitiveSet(drawArrays); osg::StateSet* stateSet = geometry->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); osg::Material* material = new osg::Material; material->setColorMode(osg::Material::OFF); @@ -489,7 +497,7 @@ SGLightFactory::getVasi(const SGVec3f& up, const SGDirectionalLightBin& lights, return 0; osg::StateSet* stateSet = drawable->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF); osg::BlendFunc* blendFunc = new osg::BlendFunc; @@ -525,7 +533,7 @@ SGLightFactory::getSequenced(const SGDirectionalLightBin& lights) sequence->setSync(true); osg::StateSet* stateSet = sequence->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF); osg::BlendFunc* blendFunc = new osg::BlendFunc; @@ -577,7 +585,7 @@ SGLightFactory::getOdal(const SGLightBin& lights) sequence->setSync(true); osg::StateSet* stateSet = sequence->getOrCreateStateSet(); - stateSet->setRenderBinDetails(9, "DepthSortedBin"); + stateSet->setRenderBinDetails(POINT_LIGHTS_BIN, "DepthSortedBin"); stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF); osg::BlendFunc* blendFunc = new osg::BlendFunc;