OpenGL ES2.0在Android中的Pan功能

3
我使用OpenGL ES 2.0在Android上开发了Auto-cad应用程序。我已经实现了绘制多条线和圆等功能,但是我在Pan功能方面遇到了困难。[Pan功能的解释:使用触摸事件将GLSurfaceview拖动到顶部、底部、左侧和右侧]。
我使用2D场景GLSurfaceview来绘制线、圆、虚线等。我正在为该glsurfaceview添加平移选项。
请提供任何样例代码或建议,以完成Android OpenGL ES 2.0中的平移功能。
我查阅了更多类似的链接。

https://gamedev.stackexchange.com/questions/48372/all-of-my-matrix-functions-not-working-opengl-es-2-0

gamedev.stackexchange.com/questions/48372/all-of-my-matrix-functions-not-working-opengl-es-2-0

http://inst.eecs.berkeley.edu/~cs184/fa09/resources/sec09_camera.pdf

使用glulookat进行OpenGL平移

http://www.felixgers.de/teaching/jogl/gluLookAt.html

http://songho.ca/opengl/gl_transform.html

http://vivin.net/2011/12/04/implementing-pinch-zoom-and-pandrag-in-an-android-view-on-the-canvas/

http://www.opengl.org/archives/resources/faq/technical/viewing.htm

在OpenGL中移动和平移相机的正确方法是什么?

OpenGL ES 2.0 捏合和缩放

但是,我无法实现平移功能。你能否为这个在安卓上使用opengles2.0的平移功能建议一些示例代码。请帮助我摆脱这个困境。

提前感谢...


我也在寻找如何移动OpenGL ES 2.0 Android中的GLSurfaceView。这可能吗?请有人提供一个示例代码。 - ShankarManickavasagam
1个回答

0
你应该实现一个自定义类,继承自TextureView,并实现onMeasure()和onLayout()方法。TextureView将显示OpenGL ES渲染,但比GLSurfaceView更灵活,并遵循Android中的正常布局层次结构,允许视图在显示器上移动。它看起来会像这样:
class CustomTextureView extends TextureView
{
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {}
    protected void onLayout(boolean bChanged, int iLeft, int iTop, int iRight, int iBottom)
    {}
}

本文将详细介绍如何使用TextureView:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1


嗨,Clay,谢谢你的回复。你能给一些代码来实现GLSurfaceView中的平移功能吗? - harikrishnan
有几种方法可以实现这一点。如果您的整个Auto CAD 图像在一个纹理中,您可以更改纹理坐标以使其位置在SurfaceTexture内平移。另一种方法是,在渲染之前使用翻译矩阵来翻译几何图形。 - ClayMontgomery
嗨,克莱,这是能够绘制线条的代码。在绘制线条后,我无法平移背景场景。我遇到了平移问题。我使用了平移功能的代码,但我无法进行平移。我在这里使用了GLSurfaceview来进行平移。我需要什么?只需从顶部、底部、左侧、右侧拖动GLSurfaceview即可移动背景GLSurfaceview。 - harikrishnan
嗨 Clay,我的代码可以帮助我识别我的平底锅问题,请帮我解决这个问题。 - harikrishnan
嗨,Clay,我这里没有使用任何AutoCAD图像。我不想平移任何图像。我想像桌面版AutoCAD一样平移背景GLSurfaceView场景。我在这里使用了setlookatm和平移、旋转矩阵来进行平移。但是,我无法得到任何清晰的解决方法。如果可能的话,请给我任何示例代码。这对我很有用。 - harikrishnan
嗨,克莱,谢谢你的回复。这是我的代码链接:http://www.mediafire.com/download/55lp59gdq78a3q3/LineDraw_Test.zip - harikrishnan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接