簡體   English   中英

glActiveTexture不起作用

[英]glActiveTexture Doesn't Work

下列:

glActiveTexture(GL_TEXTURE0 + 0);

unsigned i, w;
unsigned tex_test = Memento::_LoadImageIntoTexture("ground.png", i, w);

glBindTexture(GL_TEXTURE_2D, tex_test);
glUniform1ui(program.GetUniformLocation("tex"), 0);

將運行正常,並且我期望的圖像可以正確顯示。 然而...

glActiveTexture(GL_TEXTURE0 + 1);

unsigned i, w;
unsigned tex_test = Memento::_LoadImageIntoTexture("ground.png", i, w);

glBindTexture(GL_TEXTURE_2D, tex_test);
glUniform1ui(program.GetUniformLocation("tex"), 1);

當我嘗試將活動紋理更改為0以外的任何值時,什么都沒有顯示。 這讓我發瘋,因為我只是找不到任何解決方案,這沒有任何意義。 救命?

glActiveTexture OpenGL規范glActiveTexture

紋理單元由紋理啟用狀態,紋理矩陣堆棧,紋理環境和當前綁定的紋理組成。 修改這些狀態​​中的任何一個僅對活動紋理單元有影響。

如果使用非默認值,您可能忘記了調用glEnable(GL_TEXTURE_2D)和/或glTexEnv(...)

我的猜測是紋理加載功能正在與活動紋理單元混淆。 我個人認為應該引入一個新的“代理”紋理單元,該單元不能用作貼圖源,但可以用於加載圖像數據。 這將允許執行紋理加載而不會弄亂紋理單元的狀態。

無論如何,如果將代碼更改為此:

unsigned i, w;
unsigned tex_test = Memento::_LoadImageIntoTexture("ground.png", i, w);

unsigned int texture_unit = 1;
glActiveTexture(GL_TEXTURE0 + texture_unit);
glBindTexture(GL_TEXTURE_2D, tex_test);
glUniform1ui(program.GetUniformLocation("tex"), texture_unit);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM