是Canvas.drawVertices TRIANGLES模式,只采取前3个坐标,而忽略其他坐标?

问题描述 投票:0回答:1

canvas.drawVertices(...),有3种模式。即Canvas.VertexMode.TRIANGLESCanvas.VertexMode.TRIANGLES_FANCanvas.VertexMode.TRIANGLES_STRIP

我能理解Canvas.VertexMode.TRIANGLES_FANCanvas.VertexMode.TRIANGLES_STRIP。但不是Canvas.VertexMode.TRIANGLES

Canvas.VertexMode.TRIANGLES是否也会从下面的verts的前3个坐标中绘制一个三角形,并忽略其他?即它忽略了verts的最后2个坐标,即{width/3f, height.toFloat(), 0f, height.toFloat()}

override fun onDraw(canvas: Canvas) {
    super.onDraw(canvas)
    if (width == 0 || height == 0) return
    setLayerType(View.LAYER_TYPE_SOFTWARE, null);

    val verts = floatArrayOf(
        0f, 0f,
        width.toFloat(), 0f,
        width/2f, height.toFloat(),
        width/3f, height.toFloat(),
        0f, height.toFloat()
    )

    canvas.drawVertices(Canvas.VertexMode.TRIANGLES, verts.size, verts, 0,
        null, 0, null, 0, null, 0, 0, paint)

}
java android canvas draw vertices
1个回答
0
投票

显然,对于TRIANGLES,它需要3x的坐标,例如,3,6,9,12 ......所以每个3组坐标将被绘制为三角形。

例如。使用下面的verts将绘制2个三角形。

    val verts = floatArrayOf(
        0f, 0f,
        width.toFloat(), 0f,
        width/2f, height.toFloat(),
        width/3f, height.toFloat(),
        10f, height.toFloat() - 10f,
        10f, 10f
    )
© www.soinside.com 2019 - 2024. All rights reserved.