OpenGL はテキストのレンダリングをサポートしています。具体的には: `
glRaster3f(GLfloat x, GLfloat y, GLfloat z);
「ラスター」位置を設定し、
glutBitmapCharacter(GLUT_BITMAP_9_BY_15, 'h');
その「ラスター」位置に h をレンダリングします。ただし、それには OpenGL API を学習する必要があります。
もう 1 つのオプションは、プロジェクションのすべての計算を自分で行い、それをウィンドウのサイズの文字配列にレンダリングすることです。
OpenGL が 3D 投影と変換に使用する行列を次に示します。
それは一般的に同じ効果があり、余分なライブラリをすべて必要とするわけではありません。ただし、実際にはコア プログラムが大きくなり、OpenGL のようにハードウェア アクセラレーションが行われないため、少し遅くなる可能性があります。
一方、Java3D は実際には OpenGL または Direct3D のいずれかの上で実行されます。つまり、Java3D を実行するために必要なライブラリはさらに広範囲になります。ただし、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 効果を計算する場合に何を使用するかについても、私にはよくわかりません。
全体として、選択できる項目はたくさんありますが、どれもかなりの作業と検討が必要です。