繁体   English   中英

形状的渲染顺序

[英]Rendering order of shapes

有没有办法处理不同形状(顶点数组)的渲染顺序?

绿色平面应该在蓝色平面之前:

在此处输入图片说明

override fun onDrawFrame(unused: GL10) {
    GLES30.glClear(GLES30.GL_COLOR_BUFFER_BIT)

    Matrix.setLookAtM(
            view,
            0,
            eyeValue.x, eyeValue.y, eyeValue.z,
            0f, 0f, 0f,
            0f, 1.0f, 0.0f
    )

    Matrix.multiplyMM(mvp, 0, projection, 0, view, 0)

    shapes.forEach {
        it.onDraw(mvp)
    }
}


open fun onDraw(mvp: FloatArray) {
    program.onDrawStart()
    program.setV4(uNames.uColor, arrayColor)
    program.setV4Matrix(uNames.uMvp, mvp)
    program.drawVertexes(vertexes.buffer)
}

您必须启用深度测试

GLES30.glEnable(GLES30.GL_DEPTH_TEST)

启用深度测试后,也必须清除深度缓冲区:

GLES30.glClear(GLES30.GL_COLOR_BUFFER_BIT | GLES30.GL_DEPTH_BUFFER_BIT)

深度测试导致根据存储在深度缓冲区中的深度测试片段的深度。 如果测试失败,则丢弃该片段,目标缓冲区保持不变。
默认情况下,深度测试函数是GL_LESS 这会导致如果片段更靠近相机,那么它会通过测试,然后是之前在同一位置写入的所有片段。 因此,必须在帧开始时清除深度缓冲区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM