我用谷歌搜索来找不到这个问题的明确答案。
如果我想要一个Web applet,是否有一个Java库可以利用客户端机器上的硬件加速图形驱动程序,如OpenGL和directx?我正在想象在applet启动之前编写一些驱动程序检测代码来检测3D图形功能。
我意识到有很多Java 3D库,但无法解决这个问题。
我的印象是你可以做到,但找不到它。
虽然我在问,Flash和Silverlight怎么样?我以为他们所有的3D图形都是软件渲染的?
编辑:
我看到问题的答案是肯定的,Java确实有3D硬件支持。感谢所有信息!
我想我真正的问题是(我得到的):
1)在多大程度上支持充分利用?例如,您可以使用DirectX或OpenGL着色器吗?我可能会想到一些功能会丢失,因为它往往会抽象出来。我可以制作GPUID程序或列出客户端GPU功能的实用程序吗?
2)实用吗?我可以将像Quake这样的旧3D游戏移植到Java applet并获得不错的性能吗? (当然取决于客户系统)
答案 0 :(得分:3)
applet-launcher project应该有所帮助:
JNLPAppletLauncher是一个基于JNLP的通用applet启动器类,用于部署使用包含本机代码的扩展库的applet。它允许applet非常容易地使用像 Java 3D,JOGL和JOAL 这样的扩展,只有一些额外的参数
<applet>
,在Java SE版本上可以追溯到1.4.2
答案 1 :(得分:2)
DirectX是一个专有的Microsoft 3D系统,因此,除非您确定只能在Microsoft系统上运行,否则我会避免使用DirectX。
JOGL和Java3D非常不同。 JOGL是OpenGL的一个薄层,具有所有优点和缺点。 Java3D是一个完整的场景系统。
答案 2 :(得分:1)
完全可以编写访问3D硬件的Java小程序。 env3d项目(http://env3d.org)就是这样 - 一个生成3D加速3D小程序的java 3D引擎。网站上有很多示例程序,用于演示在浏览器中使用硬件加速3D。唯一的要求是必须安装Java,并且用户必须明确允许applet权限访问本地资源。
Env3D基于lwjgl,一个用于Java的opengl /游戏包装器。它甚至支持着色器和其他高级功能。
答案 3 :(得分:0)
答案 4 :(得分:0)
Flash支持伪3D,但不支持任何类型的OpenGL加速全景3D(基本上只是透视变形效果)。还有一些面向软件的解决方案(例如,Papervision3D)。
Silverlight将支持伪3D以及今年晚些时候的3.0版本。据我所知,目前还没有完整3D的计划。
据说计划在以后发布的JavaFX计划中提供3D支持,这将(如果它曾经发生)改进了对applet的支持。
答案 5 :(得分:0)
在Java的新版本(我认为1.6版本10?)中,对于Windows的图形管道进行了重大改进,这也是有用的。
答案 6 :(得分:0)
你不会有着色器,最后我查了一下;基于你可能认为的DX5或DX6级功能,你基本上可以获得一个场景图API,具体取决于你正在做什么。