Java-апплеты с аппаратно-ускоренной 3D-графикой? OpenGL и / илиDirectX - PullRequest
4 голосов
/ 20 апреля 2009

Я не могу найти четкий ответ на этот вопрос со всеми своими поисками.

Если мне нужен веб-апплет, есть ли в Java библиотека, которая использует преимущества графических драйверов с аппаратным ускорением на компьютере клиента, как в OpenGL и directx? Я представляю, как пишу код обнаружения драйвера перед запуском апплета для обнаружения возможностей 3D-графики.

Я понимаю, что есть много библиотек Java 3D, но не могу понять это.

У меня сложилось впечатление, что вы можете это сделать, но не можете его найти.

Пока я спрашиваю, а как насчет Flash и Silverlight? Я думал, что все их 3D-графики визуализируются программно?

EDIT:

Я вижу ответ на вопрос: да, у Java есть аппаратная поддержка 3D. Спасибо за всю информацию!

Полагаю, мой настоящий вопрос (к чему я клоню):

1) В какой степени это поддерживается для полного использования? Вы можете использовать шейдеры DirectX или OpenGL, например? Я мог бы ожидать, что некоторые функции будут отсутствовать, поскольку они имеют тенденцию абстрагировать вещи. Могу ли я создать программу GPUID или утилиту, которая подробно перечисляет возможности GPU клиента?

2) Это практично? Могу ли я портировать старую 3D-игру, например Quake, на Java-апплет и получить приличную производительность? (конечно, зависит от клиентской системы)

Ответы [ 7 ]

3 голосов
/ 20 апреля 2009

Проект запуска апплета должен помочь:

JNLPAppletLauncher является классом запуска апплетов общего назначения на основе JNLP для развертывания апплетов, использующих библиотеки расширений, содержащие нативный код. Это позволяет апплетам очень легко использовать такие расширения, как Java 3D, JOGL и JOAL , с помощью всего нескольких дополнительных параметров для тега <applet> в версиях Java SE начиная с 1.4.2.

JOGL имеет пример апплета здесь , а Java3D имеет два примера здесь .

2 голосов
/ 20 апреля 2009

DirectX - это проприетарная система Microsoft 3D, поэтому если вы не уверены, что будете работать только в системах Microsoft, я бы избегал DirectX.

JOGL и Java3D очень разные. JOGL - это тонкий слой по сравнению с OpenGL, со всеми вытекающими отсюда преимуществами и недостатками. Java3D - это полная система сценографов.

1 голос
/ 23 января 2011

Полностью возможно написать апплеты Java, которые обращаются к трехмерному оборудованию. Проект env3d (http://env3d.org) - это как раз - java 3D-движок, который производит 3D-ускоренные 3D-апплеты. На сайте есть множество примеров программ, демонстрирующих использование аппаратного ускорения 3D в вашем браузере. Единственное требование заключается в том, что Java должна быть установлена, а пользователь должен явно разрешить апплету доступ к локальным ресурсам.

Env3D основан на lwjgl, оболочке opengl / gaming для Java. Он даже поддерживает шейдеры и другие расширенные функции.

0 голосов
/ 16 сентября 2009

У вас не будет шейдеров, последний раз я проверял; в основном вы получаете API графа сцены в дополнение к функциональности уровня DX5 или DX6 в зависимости от того, что вы делаете.

0 голосов
/ 20 апреля 2009

Также может быть полезно отметить, что в новых версиях Java (я думаю, что 1.6 выпуск 10?) Были значительные улучшения в графическом конвейере для окон.

0 голосов
/ 20 апреля 2009

Flash поддерживает псевдо-3D, но не какой-либо вид FullGL 3D с ускорением OpenGL (в основном, только эффекты искажения перспективы). Также есть некоторые программно-ориентированные решения (например, Papervision3D).

Silverlight также будет поддерживать псевдо-3D с выпуском 3.0 в конце этого года. Насколько я знаю, в настоящее время нет планов полного 3D там.

Предполагается, что поддержка 3D планируется в более поздней версии инициативы JavaFX, которая (если это когда-нибудь произойдет) значительно улучшит поддержку в апплетах.

0 голосов
/ 20 апреля 2009

Поддержка графики с аппаратным ускорением существует в Java с 1.5.

См. Примечания к выпуску , как это сделать . Примечание: это для 2D.

Для 3D J2SE имеет Java3D .

...