如何使Direct3D在浏览器中工作?


9

我遇到了在浏览器中可以播放的3D游戏。他们需要安装插件才能正常工作。我猜该插件会在浏览器内部创建一个D3D窗口。

我将如何实施类似的东西?


一个有趣的问题
Notabene 2011年

Answers:


8

Unity Web Player(用于Windows)可以在窗口中使用DirectX和OpenGL(但是它抽象化了您对这些API的访问)。

另一种方法是使用ActiveX(对于Internet Explorer)或NPAPI(对于其他浏览器)实现DirectX插件。

如果您使用NPAPI,则在您的插件启动时,您会收到一个窗口句柄,您可以在其中绘制所需的任何内容(包括D3D窗口)。如果走这条路线,您实际上是在客户端计算机上运行本机代码。


请注意,NPAPI即将弃用,因此建议新的网络游戏使用其他技术,例如WebGL(正得到越来越多的支持,并且不需要其他插件)
DMGregory

5

您正在玩的游戏可能会使用WebGL http://en.wikipedia.org/wiki/WebGL,或者使用诸如firefox插件之类的更奇特的工具,但我认为您无法将机器代码嵌入到firefox插件中(不确定,那将是一个安全漏洞)。

Unity实现了其引擎的Web插件版本,似乎他们使用ActiveX来实现。我不知道它是否可以在Mac上实现...,但我想知道。

使用3D API或任何其他种类的插件来找出玩此游戏的方式的最佳方法是查看页面的HTML源,并查找对象或Activex。


为什么要投反对票?
CiscoIPPhone 2011年

4
对于可笑的建议,您不能“在Firefox插件中嵌入机器代码”。插件的全部要点是用一组“本机”代码补充Web内容。

好了,我们仍然可以讨论插件,扩展名,插件,mod等的字典条目。最好还是要精确地做什么……
jokoon 2011年

4
自Netscape Navigator 2以来,“插件”正是指在客户端计算机上执行未沙盒化(本机或其他)代码的功能。

3
netscape导航器2,您是在谈论汽车,某种SUV吗?我看不到与这个问题有任何关系...
jokoon 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.