Opengl es glPushMatrix与opengles

Opengl es glPushMatrix与opengles,opengl-es,Opengl Es,我有一个关于[glPushMatrix]、矩阵变换和OpenGL ES的问题。GLSL表示,在OpenGL ES下,必须计算矩阵: However, when developing applications in modern versions of OpenGL and OpenGL ES or in WebGL, the model matrix has to be computed. 及 据我所知,gl\u ModelViewMatrix并非在所有OpenGL ES规范下都可用。那么

我有一个关于[glPushMatrix]、矩阵变换和OpenGL ES的问题。GLSL表示,在OpenGL ES下,必须计算矩阵:

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


据我所知,
gl\u ModelViewMatrix
并非在所有OpenGL ES规范下都可用。那么,像
glMatrixMode
glRotate
,…,这样的函数在那里仍然有效吗?我可以用它们来计算模型矩阵吗?如果没有,如何处理这些转换矩阵?

首先:您不应该在常规OpenGL中使用矩阵操作函数。在旧版本中,它们只是不灵活的,而且是多余的,而在新版本中,它们被完全删除了

第二:你提到的来源是一本维基百科,这意味着它不是权威来源。在本Wikibook中,它的编写是为了适应GLSL的所有版本,其中一些版本(主要用于OpenGL-2.1)具有这些变量


您可以通过自己计算矩阵来处理这些矩阵(不,这并不慢,OpenGL的矩阵不是GPU加速的),然后通过glLoadMatrix/glMultMatrix(OpenGL的旧版本)或着色器统一将它们传递给OpenGL。

首先:您不应该在常规OpenGL中使用矩阵操纵函数。在旧版本中,它们只是不灵活的,而且是多余的,而在新版本中,它们被完全删除了

第二:你提到的来源是一本维基百科,这意味着它不是权威来源。在本Wikibook中,它的编写是为了适应GLSL的所有版本,其中一些版本(主要用于OpenGL-2.1)具有这些变量


你通过自己计算矩阵来处理这些矩阵(不,这并不慢,OpenGL的矩阵不是GPU加速的),然后通过glLoadMatrix/glMultMatrix(OpenGL的旧版本)或着色器统一将它们传递给OpenGL。

如果你打算在Android中这样做,那么看看这个。


它具有设置视图、视锥体、变换矩阵以及一些矩阵操作的功能。

如果您计划在Android中执行此操作,请查看此功能。


它具有设置视图、视锥体、变换矩阵以及一些矩阵操作的功能。

谢谢。你知道有哪个Java库可以处理转换矩阵运算吗?@JakubM.:不幸的是没有,但是你可以使用我的C“库”,它涵盖了最重要的向量、矩阵和四元数运算,并将其翻译成Java。我必须承认,我不是一个真正的Java人,我觉得和它一起工作不舒服。谢谢,那会很有用的!通常我会使用纯C,但我计划使用Android,因此Java是不可避免的,你有一个小错误:你使用
vec3_len
(第42行),但定义
vec3_length
,与
vec4_…
@VictorMaiaAldecôa相同:现代的方法是使用真正的数学库进行矩阵计算。然后将准备好的矩阵加载到OpenGL中。在现代OpenGL中作为着色器统一使用,在旧OpenGL中使用glLoadMatrix。流行的库是GLM和Eigen。我还写了一个名为linmath.h的,但我不再积极维护它(不过我会合并有用的补丁)。谢谢。你知道有哪个Java库可以处理转换矩阵运算吗?@JakubM.:不幸的是没有,但是你可以使用我的C“库”,它涵盖了最重要的向量、矩阵和四元数运算,并将其翻译成Java。我必须承认,我不是一个真正的Java人,我觉得和它一起工作不舒服。谢谢,那会很有用的!通常我会使用纯C,但我计划使用Android,因此Java是不可避免的,你有一个小错误:你使用
vec3_len
(第42行),但定义
vec3_length
,与
vec4_…
@VictorMaiaAldecôa相同:现代的方法是使用真正的数学库进行矩阵计算。然后将准备好的矩阵加载到OpenGL中。在现代OpenGL中作为着色器统一使用,在旧OpenGL中使用glLoadMatrix。流行的库是GLM和Eigen。我还写了一个名为linmath.h的,但我不再积极维护它(不过我会合并有用的补丁)。谢谢!顺便问一下,你知道我是否可以将这个库导入到一个不是Android而是普通Java应用程序的应用程序中吗?(我问的是可移植性,而不是许可)只要在Java构建路径中包含Android库,我看不出为什么不可以。谢谢!顺便问一下,你知道我是否可以将这个库导入到一个不是Android而是普通Java应用程序的应用程序中吗?(我问的是可移植性,而不是许可)只要在Java构建路径中包含Android库,我看不出为什么不。
In some versions of OpenGL (ES), a built-in uniform variable 
gl_ModelViewMatrix is available in the vertex shader