亲爱的朋友们,谁能告诉我如何在 GLCanvas 中显示一张图片以及如何使用鼠标在 GLCanvas 中旋转图片。我是这个 jogl 开发的新手。你能告诉我如何做到这一点。如果可能的话,请给我一些代码片段和一些参考网站,以获得关于 jogl 开发的清晰概念。
问候, s.kumaran。
亲爱的朋友们,谁能告诉我如何在 GLCanvas 中显示一张图片以及如何使用鼠标在 GLCanvas 中旋转图片。我是这个 jogl 开发的新手。你能告诉我如何做到这一点。如果可能的话,请给我一些代码片段和一些参考网站,以获得关于 jogl 开发的清晰概念。
问候, s.kumaran。
要在 GLCanvas 上显示图像,请使用gl.glBegin(GL.GL_POLYGON)创建多边形并使用Class TextureIO加载纹理。然后使用 Java Swings 中的 MouseListener ,您可以轻松控制图像的旋转(即纹理多边形)通过简单地改变相机的位置或做一些变换(“gl.glRotate(angle,x-axis,y-axis,z-axis) in your case")在模型视图矩阵中。
最简单的方法是使用图片对 Quad 进行纹理化,然后对该 Quad 应用仿射变换。渲染这个四边形会让你看到一个旋转的图片,你可以通过移动四边形的顶点来做几乎任何变换。
我假设您正在绘制 3D 场景并想要更改其方向,而不是想要旋转 2D 图像。
简短的回答是它分两部分进行。您需要将场景的方向存储为 4x4 矩阵(齐次矩阵 - 如果您不知道那是什么,请搜索它)。您首先需要编写代码,将鼠标拖动转换为 4x4 矩阵的变化。因此,当鼠标向上拖动时,对矩阵应用适当的旋转或其他方式。
然后您需要重绘场景,但使用新的转换后的 4x4 矩阵。使用 glMatrixMode 指定哪个矩阵(使用 GL_PROJECTION 或 GL_MODELVIEW),然后使用 glMultMatrixf() 之类的函数来操作适当的矩阵。
如果这没有意义,请阅读有关如何旋转场景的 OpenGL 教程。OpenGL 和 JOGL 非常接近,因此来自 OpenGL 的方法可以在 JOGL 中工作。