Java applet与硬件加速3D图形? OpenGL和/或DirectX

时间:2009-04-20 15:11:04

标签: java opengl 3d applet directx

我用谷歌搜索来找不到这个问题的明确答案。

如果我想要一个Web applet,是否有一个Java库可以利用客户端机器上的硬件加速图形驱动程序,如OpenGL和directx?我正在想象在applet启动之前编写一些驱动程序检测代码来检测3D图形功能。

我意识到有很多Java 3D库,但无法解决这个问题。

我的印象是你可以做到,但找不到它。

虽然我在问,Flash和Silverlight怎么样?我以为他们所有的3D图形都是软件渲染的?

编辑:

我看到问题的答案是肯定的,Java确实有3D硬件支持。感谢所有信息!

我想我真正的问题是(我得到的):

1)在多大程度上支持充分利用?例如,您可以使用DirectX或OpenGL着色器吗?我可能会想到一些功能会丢失,因为它往往会抽象出来。我可以制作GPUID程序或列出客户端GPU功能的实用程序吗?

2)实用吗?我可以将像Quake这样的旧3D游戏移植到Java applet并获得不错的性能吗? (当然取决于客户系统)

7 个答案:

答案 0 :(得分:3)

applet-launcher project应该有所帮助:

  

JNLPAppletLauncher是一个基于JNLP的通用applet启动器类,用于部署使用包含本机代码的扩展库的applet。它允许applet非常容易地使用像 Java 3D,JOGL和JOAL 这样的扩展,只有一些额外的参数<applet>,在Java SE版本上可以追溯到1.4.2

JOGL有一个示例小程序here,而Java3D有两个样本here

答案 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)

自1.5以来,Java中一直支持硬件加速图形。

请参阅how to do it上的发行说明。注意:这适用于2D。

对于3D,J2SE有Java3D

答案 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,具体取决于你正在做什么。