2013-11-02 17 views
0

我一直在用LWJGL開發一款遊戲,並遇到了一個奇怪的問題。每次我決定隱藏文字時,我的紋理似乎都解開了。這裏是所有的代碼是invlolved當文本未繪製時解除綁定的紋理(LWJGL/Slick-util)

下面是我的Text類中的代碼。

public void draw() { 
     for (TextData textData : textList) { 
      drawString(textData.getX(), textData.getY(), textData.getText()); 
     } 
    } 

void drawString(int x, int y, String text) { 
     for (String line : text.split("\n")) 
      ttf.drawString(x, y += ttf.getHeight(), line); 
    } 

現在在主類

if (Keyboard.isKeyDown(Keyboard.KEY_H)) { 
       hideText = !hideText; 
     } 

if (!hideText) { 
      text.draw(); 
     } 

此代碼是結果

http://i.stack.imgur.com/4Y9fk.png

http://i.stack.imgur.com/SUoOf.png

+0

你確定它沒有綁定紋理嗎?我懷疑這可能是使用固定功能管道完成的,並且'drawString(...)'的實現具有啓用(並保持啓用狀態)「GL_TEXTURE_2D」的副作用,該代碼在代碼中的其他地方被禁用。如果不調用'drawString(...)''GL_TEXTURE_2D'可能永遠不能重新啓用。這是所有直覺/猜測,因爲我不知道這個代碼的** ANY **實際上是如何與底層OpenGL API調用相關的。它幾乎可以肯定與綁定紋理無關,但與紋理相關的其他狀態無關。 –

回答

0

經過仔細考慮我的代碼後,我發現我的實體類在繪製時調用glBindTexture(GL_TEXTURE_2D, 0);,並且繪製文本再次啓用它。在我的Entity繪圖代碼的末尾添加glBindTexture(GL_TEXTURE_2D, 1);解決了問題。感謝幫助我解決問題的意見。

0

當文本繪製的圖像必將繪製文字,我猜測通常lwjgl/slick保存curre nt紋理繪製文本時,然後重新綁定它。我猜想這可能是一個隱藏它不會重新綁定紋理但仍然綁定另一個紋理的錯誤?