[osg-users] StateSet question
Aaron Andersen
aaron at fosslib.net
Mon Aug 31 04:47:18 PDT 2015
I will look into this. Thank you both for your answers!
Quoting Sebastian Messerschmidt <sebastian.messerschmidt at gmx.de>:
> The more modern approach would be texture-arrays which might
> outperform texture atlas implementation in terms of implementation
> effort and memory bandwidth. It requires all textures to be of the
> same dimensions.
> I'm successfully using this for texture variation on terrain and
> vegetation. Unfortunately you'll have to use the shader pipeline and
> write your own visitor to map the different textures to the
> instances of your geometry by adding an uniform to them or using an
> attribute (which might be a bit better performance-wise as there are
> no state-changes)
>
> Cheers
> Sebastian
> --
>
>
>
> Trajce Nikolov NICK <trajce.nikolov.nick
> <http://trajce.nikolov.nick>@gmail.com>schrieb:
>
> Hi Aaron,
>
> I would do this with texture atlas - all roofs in one large texture
> and map them separately. This is sort of common in database development
>
> On Sat, Aug 29, 2015 at 11:14 PM, Aaron Andersen<aaron at fosslib.net
> <mailto:aaron at fosslib.net>> wrote:
>
> Hello,
>
> Consider if I have a mesh file constructed from 2 geometries: a
> cube, and a pyramid on top of the cube, representing a simple
> house. When I load this house it is pulled into OSG as a single
> Geode composed of 2 Geometry instances.
>
> I have 2 image files for this house: a brown brick house texture
> and a black shingle texture which can be applied to the 2
> geometries of the house mesh. Now consider if I have 2 more
> textures: a dark grey vinyl siding texture, and a dark green
> metal roof texture. If I keep producing more image files you can
> imagine all the different possibilities I might have in
> constructing a home.
>
> Now consider if I want to make a row of 25 houses:
>
> osg::Group * rootOfScene = new osg::Group;
>
> osg::Node * houseGeode = osgDB::readNodeFile("house-mesh.ext");
>
> for (int i = 0; i < 25; i++)
> {
> osg::PositionAttitudeTransform * transform = new
> osg::PositionAttitudeTransform;
>
> transform->setPosition(osg::Vec3d(i * 20.f, 0, 0));
> transform->addChild(houseGeode);
>
> rootOfScene->addChild(transform);
> }
>
> What is the most efficient way to apply these different texture
> sets so that I can have a row of houses, each with different
> textures being applied to the cube mesh and the pyramid mesh?
>
> Any help is greatly appreciated.
>
> Thank you,
> Aaron
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> <mailto:osg-users at lists.openscenegraph.org>
>
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
>
> --
> trajce nikolov nick
> _______________________________________________ osg-users mailing
> list
>
> osg-users at lists.openscenegraph.orghttp://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
More information about the osg-users
mailing list