微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenGL ES如何从数组中添加和绘制图形?

如何解决OpenGL ES如何从数组中添加和绘制图形?

我是使用 Kotlin 的 OpenGL ES 的新手。我想从它们的数组中绘制一个三角形。我的数组是在与 Myglrenderer 不同的类中创建的。它位于用作绘图表面的片段的伴随对象中。这是:

class uniShow_fragment : Fragment(R.layout.fragment_uni_show) {
    private lateinit var gLView: GLSurfaceView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        gLView = MyGLSurfaceView(this.activity)
    }

    override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {

        gLView = MyGLSurfaceView(this.activity)
        return gLView
     }

    companion object Universe {
        var trs : Array<Triangle> = Array(6,{ i -> Triangle() })
        var trs_size = 0

        fun add_object(tr : Triangle) {
            trs[trs_size++] = tr
        }
    }

}

我使用位于托管我的 uniShow_fragment 的 Activity 中的按钮向数组添加一个三角形:

    val button : Button = findViewById(R.id.add_triangle)
    button.setonClickListener {
        var tr = Triangle()
        uniShow_fragment.add_object(tr)
    }

然后在 onDrawFrame 类的 Myglrenderer 函数中,我从数组中绘制一个三角形,如下所示:

override fun onDrawFrame(unused: GL10) {

    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT)
    Matrix.setLookAtM(viewMatrix,0f,-3f,1.0f,0.0f)
    Matrix.multiplyMM(vPMatrix,projectionMatrix,viewMatrix,0)

    if (uniShow_fragment.Universe.trs_size > 0)
        uniShow_fragment.Universe.trs[0].render(vPMatrix)
    else
        mTriangle.render(vPMatrix)
}

因此,如果 trs_size = 0,我会在绘制的 Myglrenderer 类中定义一个三角形,但如果我的数组包含某些内容,我会得到空屏幕...

附言问题似乎出在“添加”过程中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。