我正在使用Slick2D庫來渲染文字到屏幕上,但爲了呈現像Rect的gl形狀,我需要先禁用GL_TEXTURE_2D。我只是好奇爲什麼這是必要的。爲什麼GL_TEXTURE_2D禁止渲染形狀?爲什麼我需要在繪製字符串後禁用GL_TEXTURE_2D才能呈現形狀?
回答
OpenGL的工作方式基本上是一個大的全局狀態機。綁定紋理時,以後繪製的每個三角形都將使用該紋理。
這裏的問題在於文本繪圖並未解除其紋理,因此之後繪製的形狀將使用該紋理而不是紋理。你認爲它是「禁用」渲染的原因是因爲紋理由其他一切都是透明的字符組成。你看到的是OpenGL在不透明度爲0的情況下繪製你的形狀。
當你禁用GL_TEXTURE_2D
會發生什麼情況是紋理被解除綁定,並且你沒有紋理定期繪製。
因爲字符串的紋理被應用。因爲你可能沒有設置任何紋理座標,所以它可能會使用透明紋理的一部分,因此你什麼都看不到。
因此,字符串的紋理覆蓋整個屏幕,覆蓋形狀? – adamk33n3r
@ adamk33n3r nope字符串紋理的透明部分涵蓋了你的形狀,因此沒有任何繪製... – Goz
看到一些代碼可能也有幫助... – Goz
- 1. 爲什麼我需要mb_convert_encoding才能顯示正確的字符
- 2. 爲什麼我的形狀不能在JFrame上繪製?
- 3. 爲什麼我需要打字才能使用打字稿?
- 4. 爲什麼我需要繪製橢圓
- 5. ActionController :: Metal需要什麼模塊才能夠傳遞狀態代碼來呈現?
- 6. XNA C#爲什麼我的字符串不能繪製?
- 7. 這個Ajax爲什麼需要這麼長時間才能呈現?
- 8. PHP:爲什麼我們需要字符串比較功能?
- 9. 爲什麼我們需要將double轉換爲字符串,然後才能將其轉換爲BigDecimal?
- 10. 我需要使用什麼來繪製圖片形式?
- 11. 爲什麼C++字符串需要\ 0?
- 12. 我需要解決什麼才能打印出隨機字符串?
- 13. 繪製GL_TEXTURE_RECTANGLE與GL_TEXTURE_2D
- 14. 爲什麼我的引導符圖形呈現爲中文字符?
- 15. 爲什麼我需要depthBuffer才能使用RenderTexture?
- 16. 我需要什麼ASP.NET權限才能訪問串行端口?
- 17. 需要什麼才能使用db.scan()
- 18. strtotime製作字符串需要什麼/默認值是什麼?
- 19. iPhone/iPad UIWebView需要成爲主動視圖才能呈現?
- 20. 爲什麼我們需要jsr286中的公共呈現參數
- 21. 爲什麼我需要我需要在子類中實現IDisposable()
- 22. 我需要學習什麼才能製作「Push Pop Press」動畫?
- 23. 我需要什麼操作符才能超載?
- 24. 爲什麼我不能在HTML5畫布上繪製正方形?
- 25. 爲什麼String.split需要管道分隔符才能被轉義?
- 26. 我需要做什麼才能在vb.net中使用xml?
- 27. 我的證書需要什麼才能在.NET中使用SSL?
- 28. 爲什麼我的程序不能繪製我的矩形?
- 29. 爲什麼我的字符串只有在手動輸入時才能使用?
- 30. 爲什麼pip需要感嘆號才能在iPython中使用?
這很有道理。所以我猜測有很多glEnable和glDisable調用渲染不同的東西並不罕見。謝謝一堆 – adamk33n3r