[英]qt multiple QGLShaderProgram for one texture
我使用两个QGLShaderProgram来处理纹理。
ShaderProgram1->bind(); // QGLShaderProgram
ShaderProgram2->bind();
glBegin(GL_TRIANGLE_STRIP);
...
glEnd();
ShaderProgram1->release();
ShaderProgram2->release();
应使用Shaderprogram1和ShaderProgram2处理纹理。 但是当我调用ShaderProgram2-> bind()时会自动触发ShaderProgram1-> release()并且只有一个着色器可以工作。 如何绑定两个着色器?
你没有。
除非这些都是独立的着色器(甚至不工作的方式),每个渲染操作将应用一组着色器渲染图元。 这意味着单个顶点着色器,后跟任何曲面细分着色器,然后可选择单个几何着色器,然后是单个片段着色器。
如果您想要菊花链着色器,则必须在着色器中自行完成。
我知道这是一个非常古老的问题,但我只想在这里为可能偶然发现这一点的人加上我的两分钱。 如果要运行使用相同纹理的多个着色器,则应在更新循环的开头设置活动纹理。 然后,您必须一次运行一个着色器。 一个着色器必须在另一个着色器开始之前完成。 相反,它看起来像这样。
ShaderProgram1->bind();
...
ShaderProgram1->release();
ShaderProgram2->bind();
...
ShaderProgram2->release();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.