Dear OSG users,
I am trying to develop bump mapping using opengl es 2.0 and openscenegraph.
I can't use osgFX because of opengl es 2.0.
I have to apply a bump map to an obj that has the map embedded in the MTL.
The mtl is like this:
newmtl Nuovo
Kd 0.80 0.80 0.80
illum 2
Ns 50.781250
map_bump PINKGRA2_NRM.JPG
map_Kd PINKGRA2.JPG
I read the obj using the options string:
osg::ref_ptr options = new
osgDB::ReaderWriter::Options;
options->setOptionString("DIFFUSE=0 BUMP=1");
To generate the tagents I use tangentspacegenerator.
osg::ref_ptr< osgUtil::TangentSpaceGenerator > tsg = new
osgUtil::TangentSpaceGenerator;
tsg->generate( geo , 1);
However this is not working!!! The application crashes with a bad access!
Instead, if I use
tsg->generate( geo, 0)
then it is working! However in this case I think it is using the diffuse map to
generate the tangents, which I think is bad!
The tangent space generator is created and applied inside a nodevisitor.
I am almost sure everything is bound correctly.
#define NORMAL_ATTR_UNIT 2
#define TANGENT_ATTR_UNIT 9
#define NORMAL_TEX_UNIT 1
#define TEX_UNIT 0
_programBumpMapping->addBindAttribLocation( "a_tangent", TANGENT_ATTR_UNIT
);
_programBumpMapping->addBindAttribLocation( "a_normal", NORMAL_ATTR_UNIT );
ssRoot->setAttributeAndModes( _programBumpMapping,
osg::StateAttribute::ON );
ssRoot->addUniform(new osg::Uniform(osg::Uniform::SAMPLER_2D,
"u_TextureMap", TEX_UNIT));
ssRoot->addUniform(new osg::Uniform(osg::Uniform::SAMPLER_2D,
"u_NormalMap", NORMAL_TEX_UNIT));
Can you please help me to understand why with 0 works and with 1 I have a bad
access?
Kind Regards,
John
--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=50387#50387
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org