- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个我前段时间解决过的问题( Incorrect VBO for mesh: some triangles are connected and shouldn't [2D] ),并且由于我的着色器变得更加复杂并且出现了与此相关的不同问题,我需要从根本上解决它!
这是VBO内容:
[0.0, 0.0,
0.0, 240.0,
10.0, 0.0,
10.0, 240.0,
20.0, 0.0,
20.0, 240.0,
30.0, 0.0,
30.0, 240.0
and so on up to
1190.0, 0.0,
1190.0, 240.0,
1200.0, 0.0,
1200.0, 240.0,
1210.0, 0.0,
1210.0, 240.0]
因此数组长度为 244 点 * 2 坐标 = 488 个元素。
这是一帧的 opengl 跟踪
glClearColor(red = 0,100000, green = 0,100000, blue = 0,100000, alpha = 1,000000)
glClear(mask = 16384)
glEnable(cap = GL_BLEND)
glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 2)
glDisableVertexAttribArray(index = 1)
glVertexAttribPointer(indx = 0, size = 2, type = GL_FLOAT, normalized = false, stride = 8, ptr = 0x0)
glUniformMatrix4fv(location = 1, count = 1, transpose = false, value = [0.0025, 0.0, 0.0, 0.0, 0.0, 0.004166667, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, -1.0, -1.0, 0.0, 1.0])
glUniform1i(location = 5, x = 0)
glUniform4f(location = 3, x = 0,000000, y = 0,000000, z = 1,000000, w = 0,500000)
glUniform1f(location = 4, x = 2,491089)
glUniform1f(location = 0, x = 1780,000000)
glUniformMatrix4fv(location = 2, count = 1, transpose = false, value = [-100.0, 40.0, 260.0, 430.0, 165.6131, 122.20027, 247.55757, 189.05222, 680.0, 880.0, -268.66666, -268.66666, 126.442535, 1.7712338, 160.0, 160.0])
glDrawArrays(mode = GL_TRIANGLE_STRIP, first = 0, count = 486)
glEnableVertexAttribArray(index = 1)
glDisable(cap = GL_BLEND)
glEnable(cap = GL_BLEND)
glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 3)
glDisableVertexAttribArray(index = 1)
glVertexAttribPointer(indx = 0, size = 2, type = GL_FLOAT, normalized = false, stride = 8, ptr = 0x0)
glUniformMatrix4fv(location = 1, count = 1, transpose = false, value = [0.0025, 0.0, 0.0, 0.0, 0.0, 0.004166667, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, -1.0, 1.0, 0.0, 1.0])
glUniform1i(location = 5, x = 0)
glUniform4f(location = 3, x = 0,000000, y = 0,500000, z = 1,000000, w = 0,500000)
glUniform1f(location = 4, x = 2,491089)
glUniform1f(location = 0, x = 1780,000000)
glUniformMatrix4fv(location = 2, count = 1, transpose = false, value = [-60.0, 150.0, 330.0, 550.0, -71.13025, -193.20978, -11.679321, -223.35025, 740.0, 990.0, -268.66666, -268.66666, -394.54395, -270.3169, -160.0, -160.0])
glDrawArrays(mode = GL_TRIANGLE_STRIP, first = 0, count = 486)
glEnableVertexAttribArray(index = 1)
glDisable(cap = GL_BLEND)
eglSwapBuffers
我的着色器有点长且复杂,但它除了沿 Y 轴移动 Y 分量不为 0 的顶点之外什么也不做。统一值是正确的,并且着色器工作正常。
当我使用 TRIANGLE_STRIP 渲染时,屏幕显示连接第一个顶点 (0,0) 和最后一个顶点 (1210, ???) 的线(??? 因为我的着色器移动了它,并且它不在 240 处。我知道它在哪里,而且它应该在哪里,但它不断变化。)
使用 LINE_STRIP 进行渲染正好证实了该问题。
那么,这是 TRIANGLE_STRIP 的预期行为吗?或者有什么问题吗?阅读 opengl 规范,它似乎不应该换行,但确实如此(在不同的设备中,所以这不是特定的驱动程序问题)
最佳答案
完全找到了解决方案。
我将数组的长度减 2 作为要绘制的顶点数。错误是我的顶点数组同时保存 X 和 Y 坐标,因此它的长度实际上是要绘制的图元数量的两倍。
我现在使用 array.length/2,并且一切正常。
顺便说一句,当我发现它时,我认为性能会提高。相反,它没有发生。
关于java - Triangle_Strip 应该包裹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604223/
如果将同一个顶点 A 多次放入三角形带中,然后取另一个顶点 B 并将这个顶点也多次放入三角形带中(数量取决于要继续的三角形方向),那么一个实际上可以有两个单独的三角形带只用一个绘制调用来渲染(第一个包
我遇到了一个我前段时间解决过的问题( Incorrect VBO for mesh: some triangles are connected and shouldn't [2D] ),并且由于我的着
我在制作我的第一个着色器时玩得很开心,我的第一个测试对象是一张 100x100 的四面图片。我想我会学习如何使用 TRIANGLE_STRIP 所以我切换了它,移动了一个顶点调用,这样它看起来又是方形
这是我创建的圆柱体: void drawCylinder(float r, float g, float b) { setMaterialColors(r, g, b); glColo
我正在尝试绘制一个简单的三角形数组。它们都是相连的,所以我目前正在使用 DrawArrays 和 GL_TRIANGLE_STRIP。但是,在检查 XCode 分析器时,它建议改用 DrawEleme
我有这段代码,我正在对我正在使用的引擎进行测试。 在我的 NVIDIA NVS 4200M 上,它按预期显示 GL_TRIANGLE_STRIP。在我的 ATI Radeon 5800 上它似乎画了一
我想在 Opengl es 中通过一次 glDraw 调用绘制一个圆角矩形。我也试过了。并在答案中分享。 希望对您有所帮助。 最佳答案 我尝试通过单个 glDraw 调用在 opengl es 中绘制
我是一名优秀的程序员,十分优秀!