glPushMatrix and OpenGL ES

时光总嘲笑我的痴心妄想 提交于 2019-12-06 15:49:30

问题


I have a question regarding [glPushMatrix], together with the matrix transformations, and OpenGL ES. The GLSL guide says that under OpenGL ES, the matrices have to be computed:

However, when developing applications in modern versions of OpenGL and 
OpenGL ES or in WebGL, the model matrix has to be computed. 

and

In some versions of OpenGL (ES), a built-in uniform variable 
gl_ModelViewMatrix is available in the vertex shader

As I understood, gl_ModelViewMatrix is not available under all OpenGL ES specifications. So, are the functions like glMatrixMode, glRotate, ..., still valid there? Can I use them to calculate the model matrix? If not, how to handle those transformation matrices?


回答1:


First: You shouldn't use the matrix manipulation functions in regular OpenGL as well. In old versions they're just to inflexible and also redundant, and in newer versions they've been removed entirely.

Second: The source you're mentioning is a Wikibook which means it's not a authorative source. In the case of this Wikibook it's been written to accomodate for all versions of GLSL, and some of them, mainly for OpenGL-2.1 have those variables.

You deal with those matrices by calculating them yourself (no, this is not slower, OpenGL's matrix stuff was not GPU accelerated) and pass them to OpenGL either by glLoadMatrix/glMultMatrix (old versions of OpenGL) or a shader uniform.




回答2:


If you're planning on doing this in Android, then take a look at this. http://developer.android.com/reference/android/opengl/Matrix.html

It has functions to setup view, frustum, transformation matrices as well as some matrix operations.



来源:https://stackoverflow.com/questions/9715760/glpushmatrix-and-opengl-es

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!