2014-01-30 24 views
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()); 

回答

0

你使用哪種版本的JOGL的?我記得幾個月前PMVMatrix中的一個錯誤已經修復。

+0

我使用2.1.3。 1月31日發佈了最新版本2.1.4。未對PMVMatrix進行更改。 – user2418306

+0

我沒有看到問題,我剛剛查看了文檔: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

+0

我也讀過文檔。我無法理解一個FloatBuffer中的兩個矩陣在什麼情況下可能有用?假設調用'getPMvMatrix()'函數的人獲得PMv矩陣。相反,人們必須手動乘以P和Mv。我沒有找到將一個FloatBuffer中的兩個矩陣相乘的函數。相反,函數是將來自兩個獨立緩衝區的矩陣相乘。但是,如果我可以這樣做,爲什麼我會從單個FloatBuffer中抽取矩陣呢?FloatUtil.multMatrixf(pmvMatrix.glGetPMatrixf(),pmvMatrix.glGetMvMatrixf(),pmvFloatBuffer);'? – user2418306