嗨,这些天我一直在学习webgl,并尝试用它来制作某种游戏。
我到目前为止所做的事情并没有多大意义,但它具有游戏逻辑的一部分。
基本上我想搬家……
使用四点值绘制矩形 TRIANGLE_STRIP 。 TRIANGLE_STRIP 将使用每个三点值来制作一个三角形: [ABCD] ,webgl将绘制三角形:ABC和BCD。
TRIANGLE_STRIP
[ABCD]
在你的代码中:
initialVertices = [ 0, 0, 0, 20, 20, 0, 20, 20, ];
当我进入 RIGHT 它将创建一个这样的新顶点(例如,加上10px):
RIGHT
[ 10, 0, 10, 20, 30, 0, 30, 20, ]
并且你的代码将子缓冲数据在缓冲区中添加新的顶点数据,因此缓冲区中的整个顶点数据是:
[ 0, 0, 0, 20, 20, 0, 20, 20, 10, 0, 10, 20, 30, 0, 30, 20, ];
它表示顶点数据 [ABCDEFGH] 现在。
[ABCDEFGH]
TRIANGLE_STRIP 类型将使用每三个点绘制三角形,因此有6个三角形将绘制而不是4: ABC BCD CDE DEF EFG FGH ,我想你只想得到: ABC BCD EFG FGH 三角形。
ABC BCD CDE DEF EFG FGH
ABC BCD EFG FGH
解决:
使用退化三角形。
不要用 [ABCD] 直接顶点数据,你可以使用 [AABCDD] ,6点数据制作一个矩形。
[AABCDD]
[AABCDD] -> AAB ABC BCD CDD , AAB and CDD 是退化三角形,webgl不会绘制它。 所以当你添加这样的新矩形点数据时: [EEFGHH] 在缓冲区中,整个数据都是 [AABCDDEEFGHH] ,webgl将使它们成为三角形:
[AABCDD] -> AAB ABC BCD CDD , AAB and CDD
[EEFGHH]
[AABCDDEEFGHH]
AAB ABC BCD CDD DDE DEE EFG FGH GHH ,
AAB ABC BCD CDD DDE DEE EFG FGH GHH
你会找到 AAB CDD DDE DEE GHH 不会被绘制,所以你可以得到两个sperate矩形: ABC BCD EFG FGH
AAB CDD DDE DEE GHH
希望你能理解我优秀的英语