2013-04-25 85 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,但您也会遇到同样的问题