微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 关于WebGL的一些问题

我正在学习OpenGL 3.3并且正在研究我的小型游戏引擎.

但是我越是探索它,感觉就像离线PC游戏有一天可能会过时.所有游戏都将在浏览器上.

只要可以利用与任何其他非浏览器游戏相同的强度,我也非常有兴趣将所有内容集成到浏览中.

经过一番研究后,我发现了WebGL,它运行在HTML 5的Canvas上.

现在有几个问题,

>作为非浏览产品,WebGL可以利用PC的相同优势吗?
>它完全基于着色器?或者也支持不推荐使用(我不知道它是否也在WebGL中弃用)固定功能渲染?由于我正在学习基于着色器的方法,我真的不想回到固定功能管道.
>或者我是否必须使用其他包装器(copperlich或GLGE)来获得着色器支持? (但是,这些引擎都没有着色器支持).
> JavaScript是与WebGL交互的唯一方式吗?有没有办法用C/C++ / Java编写WebGL应用程序?
>是否可以将其他中间件与WebGL集成? (例如:bullet,phyX).我是否必须使用连接本地自由文件的JS编写一些界面?
> Java应用程序可以集成在浏览器中,它具有使用JOGL或LWJGL的OpenGl接口.那么为什么WebGL,当Java可以做到这一点?
> JavaScript不慢吗?这真的是个不错的选择吗?
>是否可以在WebGL上下文中使用OpenGL运行使用C/C++编写的引擎?它只是抽象出渲染系统还是根本不可能?
>微软是否有可能想出在IE上实现WebGL的WebX(DirectX)实例?
>我认为WebGL最重要的部分将是与浏览器的认集成.因此,您不必下载插件来玩游戏,例如用于Unity3d的Unity Player或用于特定游戏引擎的任何其他插件.只要它支持WebGL,您仍然可以在任何新安装的浏览器上播放.只需打开页面即可开始播放.不是吗?
> WebGL是否有任何备用,可以提供“无需安装插件”的启动?
>什么是稳定性问题?由于游戏将在浏览器中运行,因此其响应能力将对游戏的稳定性起到至关重要的作用.我应该为此烦恼吗?浏览器会成为游戏的瓶颈吗?
> OpenGL 3.3或更高版本支持WebGL不支持的(主要)内容(我知道WebGL基于OpenGL ES 2.0).正如我之前所说,我正在开发基于OpenGL 3.3的自己的游戏引擎

而不是是/否,一些解释或网络参考将有所帮助.

解决方法

But the more I explore it feels like the offline pc games might become obsolute one day. All the games will be on browser.

如果这种情况发生在15年后,WebGL或类似的技术仍将存在.不用急.

After a little research I found,WebGL,which runs on HTML 5’s Canvas.

除非该人正在运行Internet Explorer.

你的问题:

1:“同样的优势是什么意思?”

2:WebGL是OpenGL ES 2.0的JavaScript实现.是的.

3:见#2.

4:WebGL是OpenGL ES 2.0的JavaScript实现.所以它只是JavaScript;)

5:WebGL是OpenGL ES 2.0的JavaScript实现. Bullet等是编译库.除非您开始使用某些浏览器加载项,否则您可以使用的唯一库是浏览器附带的库以及您要使用的任何JavaScript技术.

注意:我不确定JavaScript是否可以直接与浏览器插件交互.如果可以,它将通过特定于浏览器的API.所以可能根本不可能.

6:因为Java需要安装Java运行时,这实际上是一个附加组件. JavaScript可以更直接地访问浏览器.您可以通过JSON或其他机制等与HTML的DOM,服务器端通信进行交互.

7:定义“慢”.大多数浏览器使用某种形式的JIT,因此它将“合理地快速”运行.它是否具有本机代码可能具有的性能?不,但话又说回来,你是否正在制作一款需要这种表现的游戏?

8:现在跟我说吧:WebGL是OpenGL ES 2.0的JavaScript实现.所以没有与不属于浏览器的C/C++代码接口;)

9:他们计划很快通过Silverlight公开3D渲染. Silverlight当然是一个附加组件.

10:是的.

11:没有.甚至没有任何远程跨平台.

12:这是依赖浏览器和驱动程序的. WebGL实现仍然很年轻,因此它们可能仍有一些成熟度.

13:这是一个复杂的问题.您可能已经意识到这一点,但是,WebGL是OpenGL ES 2.0的JavaScript实现;)这意味着它支持ES 2.0的功能,以及实现公开的任何扩展.与常规桌面或移动OpenGL实现不同,此处的实现包含两部分:浏览器本身和硬件驱动程序.

Google的WebGL实现将WebGL的OpenGL ES 2.0调用转换为Windows台式机上的Direct3D调用.这使它们有点稳定(因为OpenGL驱动程序,特别是在Linux机器上,是不稳定的).成本是Google现在决定支持哪些扩展. Firefox的WebGL实现直接用于桌面OpenGL或用于移动设备的底层OpenGL ES 2.0.这允许底层实现公开WebGL的扩展.

所有WebGL保证的基础ES 2.0大致相当于桌面OpenGL 2.0.桌面GL 3.x中没有任何内容.有许多OpenGL ES扩展可以提供对更多功能的访问,但是它们的总体性还没有达到桌面GL 3.x级别的功能.

最终,WebGL不适用于“硬核游戏”.它当然可以实现一些,但它的主要目的是允许绘制3D图形.起泡速度和高端物理不是它的意思.

原文地址:https://www.jb51.cc/js/157439.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐