[英]OpenGL Shaders?
我正在用Java寫一個游戲,LJGWL(OpenGL)。 我正在使用一個為我處理大量雜亂細節的庫,但需要找到更快的方法來實現這一點。
基本上我想設置屏幕上的每個像素盡可能快地說出隨機顏色。 “隨機顏色”只是一個每隔2-3秒更新一次的Array [] []。 我已經嘗試過繪制rects和使用圖像,兩者都非常慢,我想做什么。
我想我想學習如何編寫GPU着色器? 這是最快的方法嗎? LJGWL將OpenGL api暴露給java。 有關如何開始使用OpenGL着色器的任何基礎教程? 或者我應該動態創建某種紋理,然后只是拋出整個紋理,那會更快嗎?
如果是靜態顯示相同圖像的情況,那么使用紋理或顯示列表就足夠了。 但是,由於您希望經常更新它,着色器確實是最佳選擇。 着色器代碼在GPU上執行並修改GRAM中的數據,因此您沒有瓶頸從CPU轉移到GPU。 下一個最好的事情可能是像素或幀緩沖對象。 緩沖對象允許您通過DMA讀取/寫入GRAM(無需通過CPU),因此它們可以非常快。
我還沒有寫任何着色器,所以我不能推薦任何好的資源。 但SongHo的OpenGL頁面是學習緩沖對象的好地方。 (他的例子是用C ++編寫的)
紋理是在屏幕上繪制內容的最快方式,將紋理映射四邊形繪制到屏幕中,它應該足夠快。 當您需要重新上載紋理數據時,請使用glTexSubimage2D來更新它。
無需使用着色器。
我還沒有在OpenGL中使用着色器做任何工作,但是在多個場合給出相同的場景,我用一個紋理來處理它,我在屏幕頂部拋出,並且它非常有效。
我不知道你是如何准確地繪制你的像素,但是這個你點擊的限制可能是因為你傳輸的數據量(效率低下?)。 每2-3秒更新一個完整像素的屏幕應該不會很難。 雖然着色器讓您更接近顯卡,但它們永遠不會快速制作效率低下的方法,所以...
為什么你的代碼這么慢?
我認為你需要編輯/重新發布才能幫助你解決問題。 正因為它是緩慢的,是完全沒有保證,甚至着色器將是一個更快一點 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.