【问题标题】:OpenGL-ES: How to set an object at the coordinates of the touch?OpenGL-ES:如何在触摸坐标处设置对象?
【发布时间】:2011-06-30 12:33:43
【问题描述】:

我正在寻找一种在屏幕上您触摸屏幕的位置有一个 opengl 对象(三角形等)的方法。我现在在屏幕上有一个 3D 金字塔,它会在屏幕上移动,具体取决于您的触摸开始位置和拖动到的位置之间的差异。
在普通的surfaceViews中我可以做类似element.x = event.getX()的事情,但这在openGL中不起作用。所以有人有想法吗?
ps:我用的是java/Android。

【问题讨论】:

    标签: android opengl-es translation touch-event


    【解决方案1】:

    OpenGL 也不像表面视图,其中每个元素都是持久的。它相当于钢笔和画笔的 3D。您需要自己跟踪所有数据。

    因此,在您的触摸事件处理程序中,您使用输入坐标来投射一条射线,使某个平面垂直于视图。您必须自己实现此投影,但这很容易:搜索“射线平面相交”。这为您提供了平面上的坐标,该坐标与用户触摸的屏幕上的点投影相对应。您可以使用此坐标变换对象并重绘场景。

    【讨论】:

    • @user717572:你期待什么?一些神奇的OpenGL函数,你给一些屏幕坐标,它会应用到一个对象?这不是 OpenGL 的设计方式。一方面,OpenGL不处理“对象”(它有对象,但那些是纹理、着色器,即绘制东西所需的资源,而不是绘制本身的东西)。您专门询问了 OpenGL,我的回答是:OpenGL 不处理这些事情。您必须自己实现它们,或使用库。我确切地告诉过你该怎么做:根据屏幕位置将光线投射到场景中,投射到平面上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多