我如何在opengl(android平台)中的特定位置(例如1.0,2.0,0.5)绘制对象(球体或三角形)
我是 opengl(Android 平台)的新手。我想在 3D 中的特定位置绘制一个 opengl 对象,例如一个球体。我该怎么做?绘制后我想在触摸事件上旋转它。那么我该如何做这两件事呢?提前致谢。
I am new to opengl(Android Platform). I want to draw an opengl object say a sphere at a specific loaction in 3D. How can i do it? After drawing it i want to rotate it on touch event.So How can i do these two things? Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用变换矩阵来做到这一点。
您需要三个矩阵来完成您想要的操作,一个对象矩阵(给出它的位置和旋转),一个相机矩阵(给出相机在空间中的位置和方向)和一个投影矩阵(导致透视,即远处的东西很小,很大事情就近了)。
在 android 中,您需要执行以下操作:
最后两行代码依赖于您使用 OpenGL ES 2.0。如果不是这种情况,请使用 glLoadMatrix() 分别加载模型视图和投影矩阵(无需计算 mvp)。不要使用内置的 OpenGL ES 1.0 glRotatef() / glTranslatef(),它们只会引起悲伤和刺激。
请注意,上面的代码包含透视图()函数。我怀疑它在 Android 库中的某个地方,但你也可以使用:
我希望这有帮助......
You use transformation matrices to do that.
You need three matrices to do what you want, an object matrix (giving it position and rotation), a camera matrix (giving camera position and orientation in space), and a projection matrix (that causes perspective, i.e. far things are small, large things are near).
In android, you do:
The last two lines of code rely on you using OpenGL ES 2.0. If that's not the case, use glLoadMatrix() to load modelview and projection matrices separately (no need to calculate mvp). Do not use built-in OpenGL ES 1.0 glRotatef() / glTranslatef(), those only cause sadness and irritation.
Note the code above contains the perspective() function. I suspect it is somewhere in Android libraries, but you could also use:
I hope this helps ...