繁体   English   中英

qt一个纹理的多个QGLShaderProgram

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM