2013-11-25 30 views
0

我試圖直接在屏幕上繪製圖像。由內核計算並存儲在GPU內存中,因此不應將其複製回CPU內存。還應該可以在同時計算更多數據的同時動態縮放圖像。OpenCL - 繪製圖像並放大它

任何人都可以指出一個方法,有效地做到這一點?到目前爲止,我發現的所有東西都非常慢(例如使用OpenGL繪製圖像作爲紋理的立方體)。什麼是實現這一目標的最快方法?正如我所說的,在放大圖像的同時,應該可以計算更多數據以動態優化圖像。從我讀過的內容來看,OpenGL可能是最快速的方式(性能方面),但是如果它已經是我想要的方式,將圖像放在一個立方體上並運行大量着色器,似乎非常慢。

Mathe172

回答

0

找到許多的OpenCL/OpenGL的互操作的例子之一,他們都表現出你想要的東西。他們使用OpenGL紋理創建OpenCL圖像,然後將OpenCL數據渲染到圖像中,然後使用OpenGL顯示它 - 無需通過PCIe總線將數據複製回CPU內存。放大圖像可以通過放大繪製紋理的OpenGL四邊形來完成。如果您正在談論大量縮放,那麼您將需要高分辨率紋理。如果大量縮放,您應該重新考慮問題,並計算出當前顯示器所需的內容(因爲有很多縮放功能,大量數據將會在屏幕外顯示)。

+0

感謝您的快速回復。我將如何渲染紋理?正如我所說的,我發現的所有示例都使用立方體渲染紋理,這對我來說效率很低......還有,有什麼方法可以告訴OpenGL不要使用所有GPU時間嗎?就像我說的,我想在縮放時計算出更好的圖像 – Mathe172

+0

您不必渲染任何炫酷的紋理,只需一個四邊形就足夠了。一些互操作例子就是這樣做的。然後OpenGL使用很少的GPU(確保將其限制爲vsync速率,這樣您就不會過度繪圖)。 – Dithermaster