android-OpenGL ES 2中2D图形的矩阵模式

android-OpenGL ES 2中2D图形的矩阵模式,第1张

概述至于OpenGLES2,我了解到其中不再有任何矩阵(矩阵堆栈).因此,我必须创建自己的矩阵.我想要做的就是绘制一些简单的2D图形,例如几个矩形.我发现很多代码使用的是OpenGLES1或更旧的OpenGL,那里仍然有矩阵堆栈,因此我不能在2.0中直接使用它.我相信我想要执行以下 *** 作的代码pub

至于OpenGL ES 2,我了解到其中不再有任何矩阵(矩阵堆栈).因此,我必须创建自己的矩阵.

我想要做的就是绘制一些简单的2D图形,例如几个矩形.

我发现很多代码使用的是OpenGL ES 1或更旧的OpenGL,那里仍然有矩阵堆栈,因此我不能在2.0中直接使用它.

我相信我想要执行以下 *** 作的代码

public voID onSurfaceCreated(GL10 unused, EGLConfig eglConfig) {    // Set the background frame color    GLES20.glClearcolor(0.1f, 0.3f, 0.5f, 1.0f);    // Set 2D drawing mode    GLES20.glVIEwport(0, 0, windowWIDth, windowHeight);    GLES20.glMatrixMode(GL_PROJECTION);    GLES20.glLoadIDentity();    GLES20.glOrtho(0, windowWIDth, windowHeight, 0, -1, 1);    GLES20.gldisable(GLES20.GL_DEPTH_TEST);}

但不再有任何方法glMatrixMode,glLoadIDentity和glOrtho.

我如何将其转换为OpenGL ES 2以进行2D绘图设置?我相信我可以使用androID提供的Matrix类,但是我不确定如何使用.

解决方法:

基本上,您不会使用OpenGL ES 2.0来“设置”任何矩阵(在设置其他内容(如视口,禁用GL_DEPTH_TEST等)时).取而代之的是,您可以自己创建和管理矩阵,并将其传递给每个帧渲染的着色器.

您可以只创建一个正交投影矩阵,然后将其作为统一的形式传递到着色器(例如:gluniformMatrix4fv).

我无法确切说明如何使用AndroID执行此 *** 作,但是如果您有Matrix类,则它应该具有创建正交投影矩阵的功能.然后,您只需在调用glDrawArrays / glDrawElements / etc之前将指向数据的指针(即16个浮点数-4×4矩阵)传递给gluniformMatrix4fv.

因此,您上面的设置功能会小很多.

public voID onSurfaceCreated(GL10 unused, EGLConfig eglConfig) {    // Set the background frame color    GLES20.glClearcolor(0.1f, 0.3f, 0.5f, 1.0f);    // Set 2D drawing mode    GLES20.glVIEwport(0, 0, windowWIDth, windowHeight);    GLES20.gldisable(GLES20.GL_DEPTH_TEST);}

但是您的渲染功能看起来会有所不同(您仍然可以在上方创建正交投影矩阵…只要确保在必要时进行更新即可.即:屏幕调整大小/移动/等).

该页面涵盖了适用于AndroID的所有功能:

http://www.learnopengles.com/android-lesson-one-getting-started/

总结

以上是内存溢出为你收集整理的android-OpenGL ES 2中2D图形的矩阵模式全部内容,希望文章能够帮你解决android-OpenGL ES 2中2D图形的矩阵模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1074836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存