问题标签 [webgl-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
489 浏览

rust - 如何在 Rust 中使用来自 web_sys 的 WebGL 扩展

我想在编译为 WebAssembly 的 Rust 代码中使用WebGL Extensions 。web_sys::WebGlRenderingContext有一个get_extension返回 a的方法JsValue

我希望有一种方法可以使用该dyn_into方法来获取一个ANGLE_instanced_arrays接口,根据这个 webidl可能包含在 web_sys某个地方,但我似乎无法理解它。如果无法访问ANGLE_instanced_arrays接口,是否可以JsValue直接使用 调用已知方法和属性?

0 投票
0 回答
32 浏览

webgl - 为什么WebGL扩展的webidl规范有[NoInterfaceObject]扩展属性

[NoInterfaceObject]的规范声明该属性“不应在规范中使用,除非需要指定遗留 API 的行为”。

WebGL 扩展是否存在某种无法指定和遗留的东西?例如,这里是 AngleInstancedArrays 的webidl

0 投票
0 回答
568 浏览

webgl - 不支持 OES_texture_float,但 WebGL2 可用

我惊讶地发现我的 Android 手机不支持 OES_texture_float 扩展,但完全支持以浮动纹理功能为基线的 WebGL2。什么可能导致 WebGL1 缺乏对它们的支持,除了在着色器中模拟浮动纹理或将所有内容迁移到 WebGL2(这将需要对所有内容进行大规模重写以支持这两个选项)之外,还有什么办法可以解决这个问题?

编辑:似乎WebGL的答案:Declining support for OES_texture_float on Android涵盖了这个问题的一部分,尽管他们希望我们转向WebGL2似乎很奇怪,这需要大量工作来保持向后兼容性。

0 投票
2 回答
632 浏览

webgl - 支持 WebGL1 + WebGL2

我有一个使用 WebGL1 来渲染东西的库。它大量使用浮动纹理和实例渲染。

现在似乎对 WebGL1 的支持很奇怪,有些设备支持例如 WebGL2,这些扩展是核心,但不支持 WebGL1,或者支持它,但不支持扩展。

同时,对 WebGL2 的支持并不令人惊奇。也许有一天它会是,但不是它不是。

我开始研究支持这两个版本需要什么。

对于着色器,我想我大部分时间都可以侥幸逃脱#define。例如,#define texture2D texture和其他类似的事情。

当涉及到扩展时,问题就更大了,因为扩展对象不再存在。作为一个实验,我尝试将扩展属性复制到上下文对象中,例如gl.drawArraysInstanced = (...args) => ext.drawArraysInstancedANGLE(...args).

在纹理方面,不需要做太多改动,也许gl.RGBA8 = gl.RGBA在 WebGL1 中运行时添加一些类似的东西,因此在 WebGL2 中运行时它会“正常工作”。

那么问题来了……有人试过吗?我担心它会损害性能,尤其是函数调用的额外间接性。如果假设它可以在 WebGL1 中运行,它也会使阅读代码变得不那么明显。毕竟,没有 WebGL1 上下文具有drawArraysInstanced, 或RGBA8. 这也困扰着 Typescript 打字和其他小事。

另一种选择是在整个代码中都有分支。两个版本的着色器(或#ifdef技巧),每个需要纹理格式的地方和每个完成实例化的地方都有很多分支。到处都是这样的东西是非常难看的:

最后,也许还有第三种我没有想到的方法。

有什么建议吗?

0 投票
1 回答
110 浏览

webgl - 我可以在 drawArraysInstancedANGLE 中使用多个纹理吗?

我尝试在屏幕上绘制多个图标,并使用 drawArraysInstancedANGLE 方法。我尝试使用这样的多个纹理,但是有些图标绘制了不同的几何图形,我找不到像这样绘制的东西。

我使用一个大图标贴图纹理并用这个函数填充图标顶点坐标数组:

然后我的绘图函数是这样的:

我的 DrawInstances 函数是这样的:

实际上,一些图标绘制正确,我看到 2 个不同的图标,但还有一种类型看起来像这样:

我的图标只有两个像下面这样的三角形,我没有像上面那样设置任何形状,

0 投票
1 回答
2252 浏览

webgl - 在 WebGL 中调试

我正在学习WebGL,我感觉我的速度很慢,因为我很难调试我的代码。是否有任何扩展或工具可以帮助我知道缓冲区、属性指针、矩阵等的值?

我用谷歌搜索并了解了 chrome 扩展 spector.js 但这对我不起作用。我认为它应该向我显示框架或上下文,但是当我单击它时什么也没有显示。



在此处输入图像描述



当我在几秒钟后单击红色按钮时,它显示: 未检测到帧。尝试移动相机或实现 requestAnimationFrame。

0 投票
1 回答
163 浏览

glsl - GLSL-ES3(webGL2):如何从片段着色器测试扩展?

在 webGL1 中,可以使用(例如)从片段着色器测试 GLSL 扩展的可用性#ifdef GL_EXT_shader_texture_lod。它似乎不再在 webGL2 (=GLSL-ES3.0) 中工作:扩展不一样,但例如#ifdef GL_EXT_color_buffer_float似乎是错误的,尽管https://webglreport.com/?v=2告诉扩展存在。或者我做错了什么?

0 投票
0 回答
47 浏览

webgl - 是否可以在 WebGL 中过滤整数纹理?

我已经阅读了其他帖子(例如this),这些帖子展示了如何通过 WebGL 呈现整数纹理(R16I)。

但是,它使用 gl.NEAREST 进行纹理过滤以进行缩小和放大

我有兴趣使用 gl.LINEAR 进行过滤,这显然不受支持。任何人都知道任何解决方法吗?

我发现EXT_texture_norm16显然添加了对纹理的渲染,但没有纹理过滤?我不确定......(当我使用它时它不适用于 gl.LINEAR)

0 投票
0 回答
193 浏览

unity3d - Unity web gl游戏不会显示加载屏幕,只是黑屏

我一直在开发游戏并尝试将其上传到 chrome 扩展商店。当我通过清单打开它或单击 index.html 文件时,它显示一个空白屏幕并且根本不加载。关于构建加载器也有一些错误,由于某种原因,unity 没有使用 unityProgress.js 构建,我很确定它是发布到的,但我在网上找不到任何关于它的信息,当我加载一个本地主机服务器。

我这里是链接中的项目文件(带有清单、background.js 和其他所有内容)。单击此处转到项目文件