我試圖製作一個模擬骰子滾動的應用程序,此刻一切正常。我試圖爲用戶選擇一個骰子時添加一個着色器,它會在選定的骰子周圍放置一個輪廓。如何去做這件事就是將特定的骰子稍微放大並完全變黑,然後在其上繪製紋理化的骰子,使其看起來像具有輪廓。OpenGL-ES:如何使用不同的着色器繪製對象
我遇到的問題是,當繪製黑色對象的着色器第一次被應用時,它會將黑色骰子繪製得很好,但是當紋理骰子試圖繪製它時,會將它繪製在錯誤的地方,並繪製錯誤的骰子。奇怪的是它將它畫在屏幕上的其他骰子中。
如果我將兩個相同的着色器應用於對象兩次,則所有事情都會繪製其針對該特定着色器的預期結果(全部爲黑色,因爲輪廓着色器或全部紋理並從正常着色器點亮),但是當我應用兩個着色器都是同一個模型,事情出錯了。
這個類加載頂點之類的東西,並繪製對象: http://pastebin.com/N5aYAtBC
此類管理着色器: http://pastebin.com/0bT7ABRu
我省略了大量的代碼,我覺得會有什麼做的問題,但如果你需要更多的只是發表評論
,當我在不同的骰子點擊,這是發生了什麼(第一張圖是正常的): http://imgur.com/a/ikZVX
另外:不要忘記,不同的程序使用不同的統一位置。所以你必須爲每個節目保留一組統一的位置。 –
感謝您的回覆,我會盡快嘗試並報告退回 – Fonix
好吧,這個工作,我把glUseProgram移到方法的頂部,它修復了它,大部分...我有一個問題現在它不能爲大綱着色器提供正確的模型,對一些人來說也是如此。 10面的骰子完美地工作,而其餘的似乎混合使用哪個模型,所以就像6面的骰子將具有8面骰子的輪廓等。不知道爲什麼,將需要刺激更多,但也許代碼中有一條線索,知道比我更多的知識的人會接受。 – Fonix