OpenGL-ES:如何在触摸坐标处设置对象?

发布于 2024-11-18 00:44:29 字数 218 浏览 3 评论 0原文

我正在寻找一种方法,让 opengl 对象(三角形等)位于屏幕上触摸屏幕的位置。现在,我的屏幕上有一个 3D 金字塔,它根据触摸开始位置与拖动位置之间的差异在屏幕上移动。
在普通的 SurfaceView 中,我可以执行类似 element.x = event.getX() 的操作,但这在 openGL 中不起作用。那么有人有想法吗?
ps:我使用的是java/Android。

I'm looking for a way to have an opengl object(triangles etc) at the location on the screen where you touch the screen. I now have an 3D pyramid on the screen, wich moves over the screen, based on the difference between the start of your touch, and where you dragged it to.
In normal surfaceViews I could just do something like element.x = event.getX(), but this will not work in openGL. So anyone has an idea?
ps: i'm using java/Android.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷了相思 2024-11-25 00:44:29

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

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

OpenGL is nor like a surface view, where each element is persistent. It's the 3D equivalent to pens and brushes. You need to keep track of all data yourself.

So in your touch event handler you use the input coordinate to project a ray so some plane perpendicular to the view. You've to implement this projection yourself, but it's easy enough: Search for "ray plane intersection". This gives you the coordinates on the plane, that corresponds with that points projection on the screen where the user touched. You use this coordinates to transform the object and redraw the scene.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文