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