至于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图形的矩阵模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)