Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android GLES2.0:基本矩阵问题_Android_Matrix_Opengl Es 2.0 - Fatal编程技术网

Android GLES2.0:基本矩阵问题

Android GLES2.0:基本矩阵问题,android,matrix,opengl-es-2.0,Android,Matrix,Opengl Es 2.0,我从Android(Java)上的OpenGL ES开始; 我将遵循本教程: 事情基本上进展顺利,只是我在矩阵乘法方面遇到了一些问题,这是我在桌面OpenGL上没有遇到的(在桌面OpenGL中,我使用GLM而不是java/android框架) 当我执行projection*view*vec4(…coords…)时,我的projection+view矩阵无法正常工作 显示我的几何图形的唯一方法是乘以右: vec4(…)*MVP,其中MVP是投影*视图。 它不应该工作(就我而言),但。。。是的。至少

我从Android(Java)上的OpenGL ES开始; 我将遵循本教程:

事情基本上进展顺利,只是我在矩阵乘法方面遇到了一些问题,这是我在桌面OpenGL上没有遇到的(在桌面OpenGL中,我使用GLM而不是java/android框架) 当我执行projection*view*vec4(…coords…)时,我的projection+view矩阵无法正常工作 显示我的几何图形的唯一方法是乘以右: vec4(…)*MVP,其中MVP是投影*视图。 它不应该工作(就我而言),但。。。是的。至少有一点。我使用这种方式会遇到大量的剪辑问题,但总比没有好:D

我的问题有点类似于此(和同一教程,但它看起来像得到了更新):

但现在看来我的问题正好相反。为了解决这个问题,我尝试了我想象中的每一种组合(在GLSL中转换MVP,将视图与投影相乘,而不是相反,等等)

这是我的密码

 //GLSL :
 gl_Position =  vec4(vPosition, 1.0) * MVP;
其中MVP是mMVPMatrix,定义为

 Matrix.setLookAtM(mCameraMatrix, 0, 8, 8, -8, 0f, 0f, 0f, 0.0f, 1.0f, 0.0f);
 Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mCameraMatrix, 0);
而投影是

float ratio = (float) width / height;

android.opengl.Matrix.frustumM(mProjectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7);

有什么想法吗?

问题解决了:我只需要在计算它之前将我的MVP矩阵设置为Identity,而这,每一帧问题都解决了:我只需要在计算它之前将我的MVP矩阵设置为Identity,而这,每一帧看起来都不起作用(好吧,用你告诉我的乘法和乘法vec4*MVP,我得到了一个可怕的结果,而不是一个几乎正确的结果,而用MVP*vec4,我什么也得不到…)顺便说一句,doc所说的看起来像是在OpenGL中:如果你这样做:Projection*View*vec4,Projection会最后应用,但它是LHS。这就是我为什么取消它的原因也许你是对的。但是,它并不能解决我的问题。奇怪的是,忘记我所说的一切,你是对的……我从Android SDK下载了一个示例,他们使用它。建议:很好资源的确如此,但好吧,我所遵循的步骤几乎完全相同……我找不到我所做的不同之处。看起来不管用(好吧,用你告诉我的乘法和乘法vec4*MVP,我得到的结果不是一个几乎正确的结果,而是一个可怕的结果,而用MVP*vec4,我什么也得不到……)顺便说一句,doc所说的看起来像是在OpenGL中:如果你这样做:Projection*View*vec4,Projection会最后应用,但它是LHS。这就是我为什么取消它的原因也许你是对的。但是,它并不能解决我的问题。奇怪的是,忘记我所说的一切,你是对的……我从Android SDK下载了一个示例,他们使用它。建议:很好资源确实如此,但是,好吧,我遵循的步骤几乎完全相同……我找不到我做了什么不同