- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是:为什么相同的示例 WebGL 代码会在不同平台/浏览器上产生不同的输出?
在 Windows 上的 Firefox 30.0(以及最新的 32)中,但在 Mac 上则不然,在渲染点时进行多个 drawElements 调用会导致渲染不正确:
左上:Firefox(不正确)。右上:Chrome(正确)。
我通过复制和调整示例代码重新创建了这个问题(第一次在我无法共享的软件项目中遇到):
https://developer.mozilla.org/samples/webgl/sample5/index.html
然后,我修改了示例代码以实现最大程度的简单性,删除了所有动画,并渲染三个点而不是立方体,并调用了三次drawElements,并为每个点更改了统一的颜色。
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVerticesIndexBuffer);
setMatrixUniforms();
gl.uniform4f(colorUniformLoc,1.0,0.0,0.0,1.0);
/*****
gl.drawElements(gl.POINTS, 36, gl.UNSIGNED_SHORT, 0); //commented out, from original example.
*****/
gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 0);
gl.uniform4f(colorUniformLoc,1.0,1.0,0.0,1.0);
gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 2);
gl.uniform4f(colorUniformLoc,0.0,0.0,1.0,1.0);
gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 4);
渲染的三个点应该在一条直线上:
var vertices = [
// Front face
-1.0, -1.0, 1.0,
-1.5, -1.0, 1.0,
-2.0, -1.0, 1.0, //more verts not shown...
我已通过公共(public) google-drive 文件夹向任何希望提供帮助的人分享了完整的源代码:
https://drive.google.com/folderview?id=0B5OXnggcG9_7VlZHY003UzFYNGc&usp=sharing
遗憾的是,Firefox 30 是我们客户使用的平台(不可协商),因此无法通过更改浏览器轻松修复。
感谢您的阅读!
最佳答案
This seems to be a bug in firefox 。我猜想除了在使用 Firefox 时不在 gl.drawElements
中使用偏移量之外,没有简单的解决方法。 :( 问题可能仅出在 POINTS
上,因此您可以使用四边形绘制点作为另一种解决方案。
关于javascript - 多次调用 WebGL drawElements 会导致渲染不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26305186/
在我的程序中,我基本上将所有对象放在一个缓冲区中,现在当我想绘制多个对象时遇到问题,如果我只绘制一个它仍然有效。 当我粗略地将所有 glDrawArrays 更改为 glDrawElements 调用
我正在制作一个小型的 2D 游戏演示,从我读过的内容来看,最好使用 drawElements()绘制索引三角形列表而不是使用 drawArrays()绘制一个无索引的三角形列表。 但据我所知,使用 d
我正在尝试学习 WebGL,所以我从 webgl 教程中获取了一些代码,并尝试添加我自己的行,但是每当我运行它时,它都会给我这个错误: .WebGLRenderingContext: GL ERROR
我的问题是:为什么相同的示例 WebGL 代码会在不同平台/浏览器上产生不同的输出? 在 Windows 上的 Firefox 30.0(以及最新的 32)中,但在 Mac 上则不然,在渲染点时进行多
在绘制之前清除屏幕时,RenderingContext.drawElements 是否正确? 考虑这些屏幕截图,这些屏幕截图显示了调用 drawElements 的一个步骤,其中已绘制的对象被删除。
这样的OpenGL ES序列可用于一次渲染多个对象: glVertexPointer(...params..., vertex_Array ); glTexCoordPointer(...params
提前谢谢你。 我是 Webgl 的新手,我不太了解 drawElements 方法和我要绘制的当前顶点缓冲区之间的联系。我大致了解 drawArray 方法发生了什么(例如创建缓冲区,将其绑定(bin
这是一个相当特定于 WebGL 的问题。我无法理解 drawElements 的特定于 WebGL 的实现。这是 API 规范。 From the WebGL specification . 我究竟如
现在我正在按照 Jamie King Qt OpenGL 教程学习 OpenGL。 (他们很好)。 在其中一个教程中,我遵循它但无法使用 DrawElemets 绘制两个顶点缓冲区三角形。它适用于 G
编辑:我应该澄清一下...... 这就是我计划的工作方式: 每次我的应用程序渲染(60hz)时,我都想将所有要渲染的顶点放入一个巨大的缓冲区中。然后,该缓冲区将上传到 GPU。 (glBufferda
今天下午,当我从使用 VBO 转向 VAO/VBO 时,我一直在努力说服我的 openGLES2.0 代码正确执行。基本上,我正在按照 Apple 关于 openGLES 的“专家”建议进行工作,并转
我想从 model.json 文件中绘制一个 3d 模型(例如房子)。我用蓝色等单一颜色绘制房子没有问题。但是,当我尝试使用纹理而不是颜色时,我收到一个错误: WebGL: DrawElements:
我目前正在学习 android 开发以编写基于图 block 的游戏,但我无法让 OpenGLES 正常工作。 所以我尝试使用索引数组渲染四边形,但它只渲染了四边形的第一个三角形,第二个三角形丢失了,
我正在尝试绘制一个简单的三角形数组。它们都是相连的,所以我目前正在使用 DrawArrays 和 GL_TRIANGLE_STRIP。但是,在检查 XCode 分析器时,它建议改用 DrawEleme
本文整理了Java中com.google.gwt.webgl.client.WebGLRenderingContext.drawElements()方法的一些代码示例,展示了WebGLRenderin
所以,我开始了一段相当即时的视觉化 3-D 编程世界之旅。我目前在 webgl 上投入了大量资金,在 JavaScript 和大多数面向 Web 的语言方面有很强的背景,但这是我的第一种图形语言。 在
我实现了简单的 OBJ 解析器并使用平行六面体作为示例模型。我添加了基于四元数的旋转功能。下一个目标 - 添加光。我解析法线并决定将法线绘制为“调试”功能(以进一步更好地理解光)。但在那之后我坚持了下
大家好,我这几天一直在学习 webgl。 有两个片段可以完成相同的事情 - 绘制一个正方形。一种是对 6 个顶点使用 gl.drawArrays,一种是对 4 个顶点使用 gl.drawElement
我是一名优秀的程序员,十分优秀!