[osg-users] Draw instance quads not working

Bruno Oliveira bruno.manata.oliveira at gmail.com
Tue May 23 01:44:59 PDT 2017


I found out what my problem was. Since I was adding to vectors, I needed to
set vec.w = 1;

Thanks anyway!

2017-05-22 20:31 GMT+01:00 Raymond de Vries <reedev at xs4all.nl>:

> Hi Bruno,
>
> Can you provide more information about your setup? Platform, gfx card, osg
> version, etc. Have you seen and tried the osg example osgdrawinstanced?
> Writing "not working" is probably too little info for people to help you ;-)
>
> Cheers,
> Raymond
>
>
>
>
> On 5/22/2017 8:17 PM, Bruno Oliveira wrote:
>
> Hi,
>
>
> I want to render several simple quads ( a simple rectangle). I pass the
> quad centers via a 2D texture, and try to render them with the following
> vertex shader:
>
>
>
>             "#version 120\n"
>             "#extension GL_EXT_draw_instanced : enable\n"
>             "\n"
>             "uniform sampler2D texVert;\n"
>             "uniform sampler2D texColor;\n"
>             "uniform float          texSize;\n"
>             "\n"
>             "void main() {\n"
>             "\n"
>             "  float row   = float(gl_InstanceID) / texSize;\n"
>             "\n"
>             "  vec2  uv    = vec2(fract(row), floor(row) / texSize);\n"
>             "  vec4  vert  = gl_Vertex + texture2D(texVert, uv);\n"
>             "\n"
>             "  gl_Position = gl_ModelViewProjectionMatrix * vert;\n"
>             "\n"
>             "}\n"
>
>
>
> *This is my code for creating 1000 quads:*
>
> this->setUseDisplayList(false),
>     this->setUseVertexBufferObjects(true);
>
>     // Build Geometry
>     // Simple Quad
>   osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(4);
>   (*vertices)[0].set(-500, -500, 0.f );
>   (*vertices)[1].set( 500, -500, 0.f );
>   (*vertices)[2].set( 500,  500, 0.f );
>   (*vertices)[3].set(-500,  500, 0.f );
>
>   this->setUseDisplayList(false);
>   this->setUseVertexBufferObjects(true);
>   this->setVertexArray(vertices.get());
>   this->addPrimitiveSet(new osg::DrawArrays(GL_QUADS, 0, 4, 1000));
>
>
> *IMPORTANT NOTE*:
> *If I use simple GL_POINTS, my code works fine and renders correclty 1000
> points: *
>
>   osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(1);
>   (*vertices)[0].set(0, 0, 0.f );
>
>   this->setVertexArray(vertices);
>
>     this->addPrimitiveSet( new osg::DrawArrays(GL_POINTS, 0, 1, 1000) );
>
>
>
>
> ------------------------------
> [image: AVG logo] <http://www.avg.com/internet-security>
>
> This email has been checked for viruses by AVG antivirus software.
> www.avg.com <http://www.avg.com/internet-security>
>
> <#m_6652820044422372515_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
>
> _______________________________________________
> osg-users mailing listosg-users at lists.openscenegraph.orghttp://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20170523/ac55359f/attachment-0003.htm>


More information about the osg-users mailing list