Hi Sam,

On a quick read of your code I can't see a problem.  Does this work OK?

It's perfectly find to just use DrawArrays without indices like you
have done. You can mix both DrawArrays and DrawElementsUShort in a
single osg::Geometry as well.

I'm not clear on what issue you are having.

Cheers,
Robert.
On Thu, 14 Jun 2018 at 09:24, Sam Brkopac <brko...@gmail.com> wrote:
>
> Hi Robert,
>
> I have the mesh setup correctly using the DrawElementsUShort. My question was 
> regarding drawing the walkable triangles that are attached to the mesh. These 
> don't have indices and just consist of the vertex information. Here was my 
> approach to draw them.
>
>
> Code:
>
> for (size_t index = 0; index < sno.mystery_section_count(); index++)
> {
>     const auto * mystery_section = sno.mystery()->at(index);
>
>     const auto triangleSectionCount = 
> mystery_section->triangle_section_count();
>
>     osg::ref_ptr<osg::Geode> flags = new osg::Geode;
>     grouping->addChild(flags);
>
>     const osg::Vec4 non(1.0f, 0.0f, 0.0f, 0.5f); // red for non-walkable
>     const osg::Vec4 floor(0.0f, 1.0f, 0.0f, 0.5f); // green for walkable
>     const osg::Vec4 water(0.0f, 0.0f, 1.0f, 0.5f); // blue for water
>
>     osg::ref_ptr<osg::Vec4Array> color(new osg::Vec4Array(1));
>
>     switch (mystery_section->floor())
>     {
>     case sno_t::floor_t::FLOOR_IGNORED:
>         (*color)[0] = non;
>         break;
>     case sno_t::floor_t::FLOOR_FLOOR:
>         (*color)[0] = floor;
>         break;
>     case sno_t::floor_t::FLOOR_WATER:
>         (*color)[0] = water;
>         break;
>     }
>
>     for (size_t j = 0; j < triangleSectionCount; j++)
>     {
>         const auto * triangle_section = 
> mystery_section->triangle_section()->at(j);
>
>         const auto * triangleA = triangle_section->triangle()->a();
>         const auto * triangleB = triangle_section->triangle()->b();
>         const auto * triangleC = triangle_section->triangle()->c();
>
>         // setup the vertices based on the triangles
>         osg::ref_ptr<osg::Vec3Array> vertices(new osg::Vec3Array(3));
>         (*vertices)[0] = osg::Vec3(triangleA->x(), triangleA->y(), 
> triangleA->z());
>         (*vertices)[1] = osg::Vec3(triangleB->x(), triangleB->y(), 
> triangleB->z());
>         (*vertices)[2] = osg::Vec3(triangleC->x(), triangleC->y(), 
> triangleC->z());
>
>         // setup our geometry
>         osg::ref_ptr<osg::Geometry> geometry(new osg::Geometry);
>         geometry->setVertexArray(vertices);
>         geometry->setColorArray(color);
>         geometry->setColorBinding(osg::Geometry::BIND_OVERALL);
>         geometry->addPrimitiveSet(new osg::DrawArrays(GL_TRIANGLES, 0, 3));
>
>         osg::ref_ptr<osg::Geode> geode(new osg::Geode);
>         geode->addDrawable(geometry);
>         geode->getOrCreateStateSet()->setMode(GL_LIGHTING, 
> osg::StateAttribute::OFF);
>         geode->getOrCreateStateSet()->setMode(GL_BLEND, 
> osg::StateAttribute::ON);
>         
> geode->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
>
>         // prevent z-fighting.
>         osg::ref_ptr<osg::PolygonOffset> polyOffset = new osg::PolygonOffset;
>         polyOffset->setFactor(-1.0f);
>         polyOffset->setUnits(-1.0f);
>
>         osg::ref_ptr<osg::PolygonMode> polyMode = new osg::PolygonMode;
>         polyMode->setMode(osg::PolygonMode::FRONT_AND_BACK, 
> osg::PolygonMode::FILL);
>         geode->getOrCreateStateSet()->setAttributeAndModes(polyOffset, 
> osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON);
>         geode->getOrCreateStateSet()->setAttributeAndModes(polyMode, 
> osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON);
>
>         flags->addChild(geode);
>     }
> }
>
>
>
>
> If you have any feedback on the methodology, I'd love to hear it.
>
> Thanks,
> Sam[/code]
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=74070#74070
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to