假设我画一个立方体这样的:如何获取已在OpenGL ES中绘制的网格的顶点?
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVerticesBuffer);
gl.glTranslatef(x, y, z);
gl.glRotatef(rz, 0, 0, 1);
gl.glRotatef(rx, 1, 0, 0);
gl.glRotatef(ry, 0, 1, 0);
gl.glDrawElements(GL10.GL_TRIANGLES, mNumOfIndices,
GL10.GL_UNSIGNED_SHORT, mIndicesBuffer);
float[] result = getVertices(mVerticesBuffer);
哪里mVerticesBuffer是FloatBuffer具有立方体的顶点。在移动旋转立方体后,我期望mVerticesBuffer中的valuse发生了变化,我应该能够将这些值作为普通浮点数组返回。当我尝试从mVerticesBuffer获取这些值时,我总是会获得与任何平移/旋转之前的多维数据集位置相对应的值。是否有OpenGL API来获取正确的值,或者我错过了什么?
谢谢。你能告诉我这个OpenGL的其他对象和缓冲区有关变换反馈吗?我怎样才能访问它? – ace 2011-02-14 08:41:52
只有在想要获得着色器操作的结果时,变换反馈才有意义。如果您只想通过静态转换矩阵转换顶点,只需自己实施数学运算。这很容易胜过OpenGL,因为大多数OpenGL实现只是为了快速获取屏幕上的内容而优化的。 – datenwolf 2011-02-14 09:45:17