簡體   English   中英

OpenGL着色器?

[英]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秒更新一個完整像素的屏幕應該不會很難。 雖然着色器讓您更接近顯卡,但它們永遠不會快速制作效率低下的方法,所以...

為什么你的代碼這么慢?

  1. 什么代碼? 您嘗試過什么代碼? 你使用了什么紋理,渲染,...?
  2. 它慢嗎? 多慢? 你期望它有多快?
  3. 在視頻RAM中獲得1920x1080(?)像素的速度有多快,您的硬件,驅動程序和操作系統是什么?

我認為你需要編輯/重新發布才能幫助你解決問題。 正因為它是緩慢的,是完全沒有保證,甚至着色器將是一個更快一點

暫無
暫無

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

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