0

在这个浏览器和位图图形主导的世界中 - 经过几十年的 macintosh 式装饰丰富的窗口和漂亮的组件 - 我正在寻找一种方法来呈现固定大小的字符文本,在可以缩放的 3d 面板上绘制一个极其简化的“gui”并以交互方式调整大小,使内容变得很小,不被包裹或不更具可读性,放到“面板”上,用户可以拼凑在一起,“堆叠”起来,转身,拖动等。

软件应该是可移植的或跨平台的。

似乎一个简单的、基本的 3d 层是一个好东西,例如 opengl,问题是:我对这些东西一无所知。

无需学习 3d 工具包的所有内容即可完成工作的最简单途径是什么?

什么是最合适的工具来实现这一目标?

java3d? 还是过时/缓慢?qt toolkit 3d 小部件?

提前感谢您的任何提示

4

1 回答 1

1

OpenGL 确实支持渲染文本,特别是:`

glRaster3f(GLfloat x, GLfloat y, GLfloat z);

将设置“光栅”位置,并且

glutBitmapCharacter(GLUT_BITMAP_9_BY_15, 'h');

会在那个“光栅”位置渲染一个 h 。但是,这需要学习 OpenGL API。

另一种选择是自己完成投影的所有数学运算,然后将其渲染到与窗口大小相同的字符数组上。

以下是 OpenGL 用于其 3D 投影和转换的矩阵。

这通常会产生相同的效果,并且您不需要所有额外的库。但是,这实际上会使您的核心程序更大,并且可能会稍微慢一些,因为它不像 OpenGL 那样进行硬件加速。

另一方面,Java3D 实际上运行在 OpenGL 或 Direct3D 之上,这意味着运行它所需的库将更加广泛。然而,尽管它仍然是一个 API,但它似乎确实是一个比 OpenGL 或 Direct3D 简单得多的 API。

交互性是一个完全不同的问题。

再一次,OpenGL 确实有必要的支持。

gluUnProject(GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);

给定正确的投影和模型视图矩阵,将鼠标单击返回的窗口坐标转换为最前面纹素的 3 空间坐标。

在这种情况下,我真的不知道 java3D,甚至如果您计算自己的 3D 效果会使用什么。

总的来说,您确实有很多选择,但都需要大量的工作和考虑。

于 2010-01-02T17:11:20.970 回答