我正在学习OpenGL 3.3,并在我的一个小型游戏引擎上工作。
但我越是探索,感觉离线电脑游戏总有一天会过时。所有的游戏都在浏览器上。
我也非常有兴趣整合在浏览中的所有东西,只要有可能利用任何其他非浏览器游戏的力量。
经过一些研究,我发现了WebGL,它运行在HTML5的画布上。
现在有几个问题,
而不是“是”/“否”,某些解释或网络参考会有所帮助。
发布于 2011-07-02 08:06:18
但我越多地探索,就会觉得离线电脑游戏总有一天会变得一目了然。所有的游戏都在浏览器上。
如果这种情况发生在15年后,WebGL或其他类似技术仍将存在。不用着急。
经过一些研究,我发现了WebGL,它运行在HTML5的画布上。
当然,除非该人正在运行。
你的问题:
你所说的“相同的力量”是什么意思?
2: WebGL是OpenGL es2.0的一个JavaScript实现。所以是的。
3:见#2。
4: WebGL是OpenGL ES2.0的JavaScript实现。所以它只限于JavaScript ;)
5: WebGL是OpenGL es2.0的JavaScript实现。符号之类的都是编译好的库。除非您开始使用某些浏览器插件,否则您唯一可以使用的库是浏览器附带的内容以及您想要使用的任何JavaScript技术。
注意:我不确定JavaScript能否直接与浏览器插件交互。如果可以,它将通过特定于浏览器的API。因此,这可能根本不可能。
6:因为Java需要安装Java运行时,这实际上是一个附加程序。JavaScript可以更直接地访问浏览器。您可以通过JSON或其他机制与HTML的DOM、服务器端通信等进行接口。
7:定义“慢”。大多数浏览器使用某种形式的JIT,因此它将运行“相当快”。它是否具有本机代码可能具有的性能?不是的。但话又说回来,你是在做一个需要这种表现的游戏吗?
8:现在跟我说一句: WebGL是OpenGL es2.0的JavaScript实现。因此,不能与不属于浏览器的C/C++代码进行接口;)
9:他们计划在不久的将来通过Silverlight进行3D渲染。银光当然是个附加物。
10:是的。
11:没有。甚至没有任何远距离的跨平台。
12:这取决于浏览器和驱动程序。WebGL实现还很年轻,所以它们可能还有一些成熟的地方要做。
13:这是一个复杂的问题。您可能知道这一点,但是,WebGL是OpenGL es2.0的JavaScript实现;)这意味着它支持ES2.0所做的工作,以及实现公开的任何扩展。与普通的桌面或移动OpenGL实现不同,这里的实现有两个部分:浏览器本身和硬件驱动程序。
谷歌的WebGL实现将WebGL的OpenGL ES 2.0调用转换为Windows桌面计算机上的Direct3D调用。这使它们具有一定的稳定性(因为OpenGL驱动程序,特别是在Linux机器上的驱动程序是不稳定的)。代价是谷歌现在决定支持哪些扩展。火狐的WebGL实现直接用于桌面OpenGL或移动设备的底层OpenGL ES 2.0。这允许底层实现公开WebGL的扩展。
Basees2.0是所有WebGL的保证,大致相当于桌面OpenGL 2.0。所以桌面GL3.x上没有任何东西。有许多OpenGL ES扩展提供了对更多功能的访问,但它们的总和还没有达到桌面GL3.x级别的功能。
最终,WebGL并不是指“硬核游戏”。它当然可以实现一些,但它的主要目的是允许绘制3D图形。起泡的速度和高端的物理不是它的问题。
发布于 2016-05-06 12:25:32
不,本地应用程序可以访问最新的GPU功能。WebGL应用程序没有。
在WebGL中没有固定的函数。它基于OpenGL ES 2.0,它是基于100%着色器的
不是
您可以使用埃斯兰将C/C++编译为asm.js/WebAssembly。这就是Unity3D和Unreal在浏览器中支持游戏的方式。
使用emscripten是的,你可以使用C/C++库
Java已经在浏览器中被废弃了。它作为一个插件是不安全的,并且已经从大多数浏览器中删除了。
Asm.js/WebAssembly的速度大约是本机的70% (这比Java或C#的平均速度还要快),同时一些浏览器特性增加了一些本地应用程序可能没有的开销。例如,<canvas>元素总是与页面组合,这意味着至少有一个额外的全屏/全浏览器窗口绘图调用。
是的,再看一遍
这当然是可能的。没有人能预测未来。不过,微软已经在IE11和Edge中实现了IE11。
在堆栈溢出时,不鼓励征求意见的问题。
目前没有
除了测试之外,没办法知道这个。Chrome和Firefox都是每6周更新一次。Edge和Safari也每年更新几次。它们的行为随每次发布而变化。通常情况会更好。
这个名单太长了,无法进行研究。
发布于 2015-10-08 15:20:27
JavaScript的速度与现在的Java相当。
浏览器插件正在逐步淘汰。在某些情况下,数据可以与WebSockets或WebRTC进行进出交流。
对于不需要与浏览器之外的东西进行交互的库(如Bullet ),可以使用Emscripten将C++编译成asm.js。甚至可以将一个完整的C++应用程序编译成JavaScript,事实上,这就是UE4和Unity所做的。对于拥有大量数据的大型游戏/应用程序,我还不建议这样做,因为它在32位浏览器上有内存限制。
默认情况下,所有主流浏览器都会将WebGL调用转换为Direct3D (包括火狐),因此它相当稳定。
基线WebGL可以与OpenGL 2.0相媲美,但也有一些扩展可以带来WebGL 2.0 (OpenGL ES 3.x)特性,例如WEBGL_draw_buffers (目前全球支持度超过55%)。
https://stackoverflow.com/questions/6555752
复制相似问题