1
我無法理解glGetPMvMatrixf()函數。通過PMVMatrix.java
滑行我沒有注意到P和Mv的乘法。函數只返回前面帶有單位矩陣的FloatBuffer slice,後面跟着P,Mv和一堆零。我錯過了什麼嗎?jogl glGetPMvMatrixf()返回單位矩陣
這裏是我的代碼:
PMVMatrix pmvMatrix = new PMVMatrix();
pmvMatrix.glMatrixMode(PMVMatrix.GL_PROJECTION);
pmvMatrix.gluPerspective(60, ((float) drawable.getWidth())/drawable.getHeight(), 0.1f, 10);
pmvMatrix.glMatrixMode(PMVMatrix.GL_MODELVIEW);
pmvMatrix.glTranslatef(0, 0, -3);
System.out.println(pmvMatrix.toString());
System.out.println(
Arrays.toString(pmvMatrix.glGetPMvMatrixf().array())
);
int pmvMatrixUniformLocation = gl.glGetUniformLocation(program, "pmvMatrix");
gl.glUniformMatrix4fv(pmvMatrixUniformLocation, 1, false, pmvMatrix.glGetPMvMatrixf());
我使用2.1.3。 1月31日發佈了最新版本2.1.4。未對PMVMatrix進行更改。 – user2418306
我沒有看到問題,我剛剛查看了文檔:http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/util/PMVMatrix.html# glGetPMvMatrixf()是的,矩陣是一個切片部分,那有什麼問題? http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/util/PMVMatrix.html#storageDetails – gouessej
我也讀過文檔。我無法理解一個FloatBuffer中的兩個矩陣在什麼情況下可能有用?假設調用'getPMvMatrix()'函數的人獲得PMv矩陣。相反,人們必須手動乘以P和Mv。我沒有找到將一個FloatBuffer中的兩個矩陣相乘的函數。相反,函數是將來自兩個獨立緩衝區的矩陣相乘。但是,如果我可以這樣做,爲什麼我會從單個FloatBuffer中抽取矩陣呢?FloatUtil.multMatrixf(pmvMatrix.glGetPMatrixf(),pmvMatrix.glGetMvMatrixf(),pmvFloatBuffer);'? – user2418306