2013-04-25 19 views
-2

我正在製作一個小型的Java遊戲庫,我想爲更多面向Java的繪圖製作繪圖代碼,而不是調用一些C++方法來繪製API。無論如何,我擔心它可能會比其他圖形API更慢。那麼這會是一個不錯的選擇嗎?另一個問題是我找不到一個有用的OpenCL教程(我需要先學習它),有人知道嗎?OpenCL是OpenGL和DirectX的快速替代品嗎?

回答

5

OpenCL是而不是一個圖形API。它並不意味着渲染,並且它通常不會做得很好。

此外,OpenCL並不比OpenGL更「面向Java」。它仍然是一個基於C的API,所以你仍然會「調用一些C++方法來吸引API」。

2

嘛,OpenCL不是gpraphics API,但異構計算架構,可以使用你的顯示卡(或其他特定的設備),以使非圖形計算(GPGPU),類似於DirectComputeCompute shader in OpenGLCUDA等。 它不是面向對象的,因爲使用純C接口。雖然可以找到綁定(對於java:JOCL)。

0

另外;你知道有幾個很好的面向對象的java圖形庫。例如Jmonkey引擎。據我所知,如果你想要與圖形卡交談的快速圖形,你必須通過OpenGL *(與openCL不同,它是用於圖形)。所有的java API都是在後臺執行的,像LWJGL這樣的功能非常薄,基本上只是將OpenGL的方法暴露給Java:根本沒有任何對象方向。其他人在沒有用戶實現其OpenGL的情況下這樣做,這些往往是「場景圖」類型的圖形引擎,並且完全以對象爲導向。

如果你想要爲最終用戶創建「感覺像java」的東西,但是在底層使用OpenGL,我會先從LWJGL開始,然後再構建它。這是JMonkey引擎所做的。

所有這一切都假設你在3D中工作,如果你在2D中工作,那麼性能不太可能成爲問題。

所以要回答你的問題,如果一個完整的Java圖形解決方案是一個好主意: 它不會與圖形卡交談,所以你會依靠你的CPU來完成這項工作; 在2D中:這可能是好的,但速度會更慢,但速度比非常快仍然非常快。 在3D中:我懷疑你可以在任何現實場景下以實時速度工作。

*或directX,但您也會遇到同樣的問題