我在android上使用opengl显示openstreetmap数据到目前为止一切正常但是在使用相对较大的数据文件(> 10Mo)时,我的缩放和平移功能不能正常工作它太慢了。 在渲染器内部,我有这些代码行
echelle=OsmGLSurfaceView.mScaleFactor;
Matrix.orthoM(mProjectionMatrix,0, left/ (float)echelle, right/ (float)echelle,bottom/(float)echelle,top/ (float)echelle,1,25);
Matrix.translateM(mProjectionMatrix,0,6*OsmGLSurfaceView.mPosX/(float)echelle,-6*OsmGLSurfaceView.mPosY/(float)echelle,0);
Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0);
osmf.draw(mMVPMatrix);
我在glsurfaceview中使用scalegesturedetector来获取比例因子以及平移所需的x,y位置 正如我所说,一切都适用于非常小的数据文件
我在哪里弄错了?
答案 0 :(得分:0)
前一段时间我终于得到了答案,也许有一天可能对某人有所帮助。缩放或平移功能没有任何问题,而问题是draw()调用的数量,这实际上导致了非常慢的渲染。因此,使用OpenGL ES 2编程时唯一的规则是对draw()方法进行最小调用,这将减少CPU和GPU之间的数据交换,从而加快应用程序的运行速度。你真的需要使用GLGL或GL_POINT这样的OpenGL例程来获得快速渲染!