簡體   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