看板 GameDesign 關於我們 聯絡資訊
今天想要做的是 假設我有兩個 Texture2D (A / B) 寬跟長不一定(至少都2000+) A 是已經有內容的Texture (從圖片讀來or其他..) B 則是宣告出來的空白的 想要把A中的某些符合條件的像素點到B裡面去的話 有什麼很快的方式嗎? 比如說 A每橫移3格 才把該像素點到B 就會像: 假定--> 寬等於 3000 , 高等於 2000 for (int x = 0; x < 3000; x+=3) { for (int y = 0; y < 2000; y++) { Color thePixel = A.GetPixel(x, y); B.SetPixel(x, y, thePixel); } } 用兩層For迴圈是可以完成, 可是效率應該是最低的 有沒有比較快速的語法或方法可以加速呢 希望版上的大大可以指引點方向 >///< 感謝 !! -- 果我們要把磁鐵棒放進線圈,    線圈會說「不!!不要過來!!」而發出阻力不讓磁鐵棒靠近。  但是如果我們要把放進去的磁鐵棒從線圈拿走,         「傲嬌是一種  線圈反而會說「我…我又沒有叫你走!!」而發出阻力不讓磁鐵棒離開。  自然現象」  這種現象不就是傲嬌嗎!                     新科科人雜誌  所以傲嬌這東西根本不是新梗,19世紀就有科學家發現傲嬌了。     /民明書房 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.20.18 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1589869572.A.F33.html
BSpowerx: 另外做一個Mask貼圖C來運算? 05/20 00:01
andysneo: Compute Shader 05/20 14:15
cjcat2266: blit + shader或compute shader,不管使用何者,shader 05/20 14:28
cjcat2266: 負責的都是在一個GPU thread中處理一個像素,執行你的 05/20 14:28
cjcat2266: 取值、比較、賦值的邏輯,3000x2000個GPU thread一次 05/20 14:30
cjcat2266: render/dispatch完成 05/20 14:30
doasgloria: 查了一下 感覺完全是shader的功能 該來研究一下了=w= 05/20 15:43
cjcat2266: shader擅長簡單且大量平行的運算 05/21 01:46
doasgloria: 讚嘆Compute Shader ! 05/21 19:58
doasgloria: 還沒寫出來 但是突然想到一個問題 如果把這樣的運算用 05/21 19:59
doasgloria: GPU, 我的資料SIZE這麼大 會不會在送到GPU這段 耗費很 05/21 20:00
doasgloria: 多時間呢 05/21 20:00
diorleoroy: 不會,速度很快,我用compute shader做跟你一樣的事, 05/21 20:23
diorleoroy: resolution更大,張數要求更嚴苛,處理速度快到炸 05/21 20:23
doasgloria: 讚嘆Compute Shader, 正在努力研究中 !! 05/21 21:41
cjcat2266: texture已經是在VRAM上的資料了,你做的事情只是給GPU 05/22 01:10
cjcat2266: 下指令去存取而已,沒有”送大量資料過去給GPU”這問題 05/22 01:10
doasgloria: 原來如此 !! 讚嘆 !! 感覺這就是我需要的 !! 05/22 09:19