问题标签 [webgl]

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 回答
3552 浏览

javascript - WebGL Javascript 不工作 :(

我正在尝试画一个圆柱体,但它不起作用:(

你能帮我吗?

http://www.nextlevelgeek.com/CylinderWebGL.zip

0 投票
2 回答
3188 浏览

javascript - WebGL着色器创建问题

我正在尝试在 WebGl 和 JavaScript 中制作一个简单的应用程序,并且在闲暇我在互联网上找到的一些教程时,我在创建一些基本着色器时遇到了一个奇怪的问题。创建着色器程序的函数如下所示:

2个着色器看起来像:

奇怪的是,第一个顶点着色器编译成功,但对于片段着色器,它在“this.gl.compileShader(tempFrag);”上崩溃 线,我不知道为什么。

0 投票
2 回答
6893 浏览

textures - WebGL:顶点着色器中的纹理访问?

是否可以使用 WebGL 从顶点着色器中读取纹理?

我写了一个WebGL 页面(只是为了尝试一下)并使用 Chrome 7 来测试它。一旦我升级到 Chrome 8,它就停止了工作。我仔细检查了 webgl 是否已启用。错误是:

“texture2D”:找不到匹配的重载函数

当我用常量替换对 texture2D 的调用时,它可以工作。使用相同纹理的片段着色器中的纹理访问也有效。

有人有想法么?我对升级 Chrome 导致它崩溃的事实感到特别震惊。

更新:它适用于 Firefox 4 beta。我报告了 Chrome 的一个错误 - 问题 65340

更新 2:它现在可以在 Firefox 和 Chrome 中使用

0 投票
1 回答
1257 浏览

shader - WebGl 制服返回值

我正在尝试在 WebGl 中制作一个简单的 3D 应用程序,其中绘制的每个对象都附加了它自己的着色器。但是我在 Firefox 中遇到了一个奇怪的问题(在 Chrome 中这很好用),其中每个着色器中每个矩阵/采样器的统一位置没有正确保存。这意味着每次更改当前着色器时,我必须为着色器使用的每个矩阵调用 getUniformLocation,这对我来说似乎有点浪费。

上面的代码是我创建着色器并将其存储以供跨多个对象使用的地方。我知道 tmp 着色器对象的引用已正确存储和修改,因为在这些代码行的上方,我以类似的方式保存每个属性位置,不需要为“当前着色器”的每次更改重新设置.

就像我说的,这不仅仅在 Firefox 中有效,这让我相信 Firefox 和 Chrome 以不同的方式存储统一位置。有谁知道另一种存储这些值的方法,以便它可以在两个浏览器中工作,而不必为每一帧“重新获取”它们?

0 投票
1 回答
196 浏览

documentation - 有谁知道我在哪里可以找到一些好的 WebGL 文档?

我正在尝试从完全没有 OpenGL 或 OpenGL ES 经验的情况下学习 WebGL,而且我很难弄清楚每个函数调用背后发生了什么,更确切地说是 GPU 究竟发生了什么。我尝试遵循一些基本教程,并且它们可以正常工作,但是当我尝试在 WebGL 中做一些更复杂的事情时,我经常会遇到奇怪的问题。就像我应该链接着色器时一样,当为一个纹理调用 texImage2D 两次时会发生什么等。

我在网上搜索了高低,信息充其量是稀缺的,主要是它仍在开发中,还很少有浏览器支持它。如果没有任何完整的文档,它是否与 OpenGL ES 足够相似,可以依赖它作为参考?

0 投票
1 回答
2855 浏览

transparency - WebGL 透明黑

我有一个奇怪的问题,在尝试在 WebGL 中进行混合时我无法弄清楚。黑色被渲染为完全透明,所有带有灰色阴影的东西也被渲染为半透明。我已将其设置为使用 alpha 通道作为透明度源,并且在某些方面它有效,当更改 alpha 值时,所有不是黑色/灰色的东西都会以不同的方式呈现。但即使我将 alpha 设置为 1,黑色仍然显示为透明。

这就是我启用透明度的方式:

以及做透明度的着色器部分:

其中 texColor 是正在采样的纹理颜色,vLightWeight 是在顶点着色器中计算的阴影,而 uAlpha 是我用于透明度的制服。

0 投票
1 回答
2030 浏览

webgl - 在 WebGl 中进行混合的正确方法

在 WebGL 中进行混合时,我遇到了一些问题。其中之一是在混合打开时无论 alpha 值如何渲染颜色的方式。这意味着较深的颜色总是与下面的颜色混合,即使 alpha 设置为 1.0。是的,更亮的颜色会根据 alpha 值呈现不同的颜色,所以我认为我设置着色器的方式没有问题。

再说一次,我还没有机会渲染一个完整的场景,我目前只使用 WebGl 进行测试,所以我只在默认背景上绘制简单的对象。一旦我使用对象渲染屏幕的每一位,这些混合问题是否会被“修复”,或者这是 WebGL 的限制?

0 投票
3 回答
2429 浏览

javascript - 独立的 webGL/Javascript 客户端?

我正在研究创建使用 webGL 的 Javascript 应用程序的可能性。

由于 webGL 仅在几个浏览器中可用,而且我不想强迫人们(直接)使用某个浏览器,我也想提供一个独立的应用程序客户端下载。

是否有可能以某种方式创建一个无边界且独立的“假浏览器”客户端,该客户端将我的应用程序嵌入到 linux 和 windows 中?

这将允许我分发一个独立的客户端,而无需修改我的应用程序代码。

0 投票
1 回答
1480 浏览

opengl-es - 意想不到的拉伸纹理

我有以下代码片段:

我的纹理尺寸是256x256

选项 1——我的多边形

结果:纹理被拉伸,所以我失去了细节。

选项 2——我的多边形(请注意,这是一个比选项 1 小得多的多边形)

结果:我可以看到纹理的细节。

我的理解是,REPEAT(TEXTURE_WRAP_S 和 TEXTURE_WRAP_T)选项即使在选项 1 中也会给我详细信息。为什么在选项 1 中拉伸纹理?我误会了吗?

这是在 Chrome Canary 版本上运行 WebGL。

我做错了什么?

在此先感谢您的帮助。

0 投票
4 回答
3787 浏览

webgl - 是否可以在 Javascript/WebGL 中制作 MMO 作为前端?

从理论上讲,使用 Javascript/WebGL 制作 MMO 会有什么问题?另外,一般来说,我需要学习哪些服务器语言来为其构建后端/服务器架构?