<div dir="ltr">Last I heard glGet calls can sometimes stall the pipeline so I have been trying to avoid them. I usually use the method clearing the shader cache when mixing opengl codes and that seems to work.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 16, 2018 at 9:21 PM, Benjamin Schleimer <span dir="ltr"><<a href="mailto:BSchleimer@vytronus.com" target="_blank">BSchleimer@vytronus.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_-2268293744818535768divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Hi,</p>
<p>   I have come across an interesting problem with VTK and I wanted to ask if there is another way to work around it.</p>
<p><br>
</p>
<p>Using the OpenGL2 backend, we have discovered that if another system renders to the same opengl context as VTK,</p>
<p>then the shader cache is put into an invalidated state.</p>
<p><br>
</p>
<p>The root problem is that in<strong> </strong><span>Rendering/OpenGL2/<wbr>vtkOpenGLShaderCache.cxx, in
<span>vtkOpenGLShaderCache::<wbr>BindShader</span>(), the lastShaderBound is assumed to not change. VTK assumes that it's the only system setting glUseProgram() for the opengl context.</span></p>
<p><span>So if another system clears the GL_CURRENT_PROGRAM value, then VTK doesn't know about it and the following calls to set program uniforms fails with an opengl error.</span></p>
<p><span><br>
</span></p>
<p><span>A suggested is to add a call to glGetIntegerv(GL_CURRENT_<wbr>PROGRAM, ...) and compare it against this->Handle</span> before returning.<br>
</p>
<p><br>
</p>
<p>I worked around this problem by clearing the shader cache before invoking <span>
vtkRenderWindow</span>::Render() but this required knowing that the shader cache was invalid.<br>
</p>
<p><br>
</p>
<p>Sincerely,</p>
<p>Ben<br>
</p>
</div>
</div>

<br>______________________________<wbr>_________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" rel="noreferrer" target="_blank">http://www.vtk.org/Wiki/VTK_<wbr>FAQ</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=<wbr>vtkusers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://public.kitware.com/mailman/listinfo/vtkusers" rel="noreferrer" target="_blank">https://public.kitware.com/<wbr>mailman/listinfo/vtkusers</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Ken Martin PhD<div>Distinguished Engineer<br><span style="font-size:12.8px">Kitware Inc.</span><br></div><div>101 East Weaver Street<br>Carrboro, North Carolina<br>
27510 USA<br><br><div><span style="font-size:10pt;font-family:Tahoma,sans-serif">This communication,
including all attachments, contains confidential and legally privileged
information, and it is intended only for the use of the addressee.  Access to this email by anyone else is
unauthorized. If you are not the intended recipient, any disclosure, copying,
distribution or any action taken in reliance on it is prohibited and may be
unlawful. If you received this communication in error please notify us
immediately and destroy the original message. 
Thank you.</span></div></div></div></div></div></div></div>
</div>