这是很多问题。让我一一解决。
我有哪些样式标记选项,例如使不同的组可见?
颜色、形状、大小,甚至动画。
显然我可以改变颜色。但在“传统”散点图中,也使用圆形、加号、Xes、框等 - 我如何在 OpenGL 散点图中最好地实现这些?
广告牌精灵(教程)。这个想法是绘制一个小四边形,使其始终面向相机。这种旋转可以在 CPU 上完成,但如果相机移动并且您需要在每一帧重新计算它,那么在顶点着色器中执行它可能会更快。
我是否应该将所需的 2D 标记渲染为一个小纹理,然后为每个标记绘制一个带有纹理的三角形?
两个三角形(即一个正方形)是常用的方法,因为正方形更容易纹理化。
我可以将纹理仅用于 Alpha,但使用动态颜色吗?(例如有纹理=类,颜色=其他分数)?
是的。如果您使用固定管道,纹理将由当前颜色调制。换句话说,如果您的纹理中有一个带有 alpha 的白色标记,并且您将当前颜色设置为红色,您将得到一个红色标记。如果您使用着色器,则必须在片段着色器中执行此操作。
在 OpenGL 中是否有任何我在常规绘图库(例如 gnuplot)中没有的样式标记的更酷方法?
就像我提到的:动画。你可以让你的标记旋转,上下摆动,或者以不同的速度随机摆动。我曾经听说过一种计算机网络可视化系统,其中水会从计算机图标中滴出以指示数据包丢失,并且会冒烟和火来指示 CPU 过热。极限是你的想象力!
任何性能提示?显示列表或顶点缓冲区?
顶点缓冲区。可能是着色器。但是根据您的数据集的大小和您使用 OpenGL 的经验,您可以在没有任何一个的情况下侥幸逃脱。
先尝试最简单的事情,如果太慢,就用更快的实现来代替瓶颈。不要试图一次做所有事情;让一件事发挥作用,然后逐步添加和改进一个步骤。