一个准拉斯金式的可缩放、主要是文本的界面+ 3D、跨平台、开放;我从哪里开始? (opengl?)

发布于 2024-08-16 09:08:52 字数 380 浏览 5 评论 0原文

在这个浏览器和位图图形主导的世界中 - 经过几十年的 Macintosh 风格的华丽装饰窗口和漂亮的组件 - 我正在寻找一种方法来渲染固定大小的字符文本,在可以缩放的 3D 面板上绘制一个极其简化的“gui”并交互式地调整大小,使内容变小,不被包装或不更具可读性,到“面板”上,用户可以将其平铺在一起,“堆叠”,翻转,拖动等。

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

看起来简单、基本的 3D 图层是一个很好的东西,例如 opengl,问题是:我对这些东西一无所知。

无需学习 3d 工具包的所有内容即可完成任务的最简单方法是什么?

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

java3d?或者它已经过时/缓慢? qt 工具包 3d 小部件?

预先感谢您的任何提示

in this browser and bitmap graphics dominated world - after decades of macintosh-ish richly decorated windows and pretty components - I'm looking for a way to render fixed size character text, draw an extremely simplified "gui" onto 3d panels that can be zoomed and interactively resized making the content tiny and not wrapped or not more readable, onto "panels" that the user could tile together, "stack" up, turn around, drag etc.

the software should be portable or cross platform.

it seems that a simple, basic 3d layer is a good thing to employ, e.g. opengl, the problem is: i don't know anything about these things.

what's the most easy route to get the thing done without having to learn everything of a 3d toolkit?

what could be the most fitting tool to achieve this?

java3d? or is it outdated/slow? qt toolkit 3d widgets?

thank you in advance for any hint

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

演多会厌 2024-08-23 09:08:52

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 简单得多。

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

再次强调,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 效果,您会使用什么。

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

OpenGL does have support for rendering text, specifically: `

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

would set the "raster" position, and

glutBitmapCharacter(GLUT_BITMAP_9_BY_15, 'h');

would render an h at that "raster" position. However, that would require learning the OpenGL API.

The other option is to do all of the math for projection yourself and just rendering it onto a character array that is the size of your window.

Here are the matrices that OpenGL uses for its 3D projections and transformations.

That would have generally the same effect, and you wouldn't need all of the extra libraries. However, that would actually make your core program bigger, and it might be slightly slower because it isn't hardware accelerated like OpenGL is.

Java3D on the other hand, actually runs on top of either OpenGL or Direct3D which means that the libraries required to run it would be even more extensive. However, while an API nonetheless, it does seem to be a much simpler API than either OpenGL or Direct3D.

The interactivity is a different problem all-together.

Once again, OpenGL does have the necessary support.

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

would convert the window coordinates returned by a mouse click into the 3-space coordinates of the front most texel given the proper projection and modelview matrices.

I don't really know about java3D in this case, or even what you would use if you calculated your own 3D effect.

Overall, you do have a lot to chose from, but all require a good deal of work and consideration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文