<div dir="ltr"><div><div><div>Hi,<br><br><br></div>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:<br><br><br><br>            "#version 120\n"<br>            "#extension GL_EXT_draw_instanced : enable\n"<br>            "\n"<br>            "uniform sampler2D texVert;\n"<br>            "uniform sampler2D texColor;\n"<br>            "uniform float          texSize;\n"<br>            "\n"<br>            "void main() {\n"<br>            "\n"<br>            "  float row   = float(gl_InstanceID) / texSize;\n"<br>            "\n"<br>            "  vec2  uv    = vec2(fract(row), floor(row) / texSize);\n"<br>            "  vec4  vert  = gl_Vertex + texture2D(texVert, uv);\n"<br>            "\n"<br>            "  gl_Position = gl_ModelViewProjectionMatrix * vert;\n"<br>            "\n"<br>            "}\n"<br><br><br><br></div><b>This is my code for creating 1000 quads:</b><br><br>this->setUseDisplayList(false),<br>    this->setUseVertexBufferObjects(true);<br><br>    // Build Geometry<br>    // Simple Quad<br>  osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(4);<br>  (*vertices)[0].set(-500, -500, 0.f );<br>  (*vertices)[1].set( 500, -500, 0.f );<br>  (*vertices)[2].set( 500,  500, 0.f );<br>  (*vertices)[3].set(-500,  500, 0.f );<br><br>  this->setUseDisplayList(false);<br>  this->setUseVertexBufferObjects(true);<br>  this->setVertexArray(vertices.get());<br>  this->addPrimitiveSet(new osg::DrawArrays(GL_QUADS, 0, 4, 1000));<br><br><br></div><b>IMPORTANT NOTE</b>: <b>If I use simple GL_POINTS, my code works fine and renders correclty 1000 points:<br></b><br><br>  osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(1);<br>  (*vertices)[0].set(0, 0, 0.f );<br><br>  this->setVertexArray(vertices);<br><br>    this->addPrimitiveSet( new osg::DrawArrays(GL_POINTS, 0, 1, 1000) );<br><br>  <br></div>