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 效果会使用什么。
总的来说,您确实有很多选择,但都需要大量的工作和考虑。