Java 三角带应该包起来吗?

Java 三角带应该包起来吗?,java,android,opengl-es,opengl-es-2.0,Java,Android,Opengl Es,Opengl Es 2.0,我面临着一个问题,我以前工作过,由于我的着色器变得更加复杂,并且出现了与此相关的不同问题,我需要从基础上解决它 这是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,

我面临着一个问题,我以前工作过,由于我的着色器变得更加复杂,并且出现了与此相关的不同问题,我需要从基础上解决它

这是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的顶点。均匀值正确,着色器工作正常

当我使用三角形带渲染时,屏幕显示连接第一个顶点0,0和最后一个顶点1210的线???因为我的着色器会移动它,而不是240。我知道它在哪里,也知道它应该在哪里,但它不断变化

使用LINE_STRIP渲染只会确认问题


那么,这是三角带的预期行为吗?还是出了什么问题?通过阅读opengl规范,可以发现它不应该包装,但它在不同的设备中包装,因此它不是一个特定的驱动程序问题,完全找到了解决方案

我将数组长度减去2作为要绘制的顶点计数。错误在于我的顶点数组同时保存X和Y坐标,所以它实际上是要绘制的基本体数量的两倍

我现在使用array.length/2,并且所有操作都正常


顺便说一句,当我发现这一点时,我认为表演会增加。相反,它没有发生。

没有,三角形带将渲染从前3个顶点到最后3个顶点的三角形。可能您的数组未正确初始化,使最后一个顶点=[0]?否,此处发布的值取自调试断点。glBufferData缓冲预期的数据量:4*488字节,因此VRAM上的vbo是正确的。。还有别的想法吗?您能否判断渲染调用是否正确?