2013-08-30 26 views
2

我在写一个模拟旧显示器(software link)外观的终端仿真器。下面是截图:在OpenGL中绘制闪亮的灯光以模拟旧显示器扫描线

Screenshot

对于这个版本,我用的2D图形。我的目的是要迁移到的OpenGL实现更高的性能比较,并能够有一个屏幕弯曲,像这样的:

Screenshot 2 http://www.meeho.net/blog/wp-content/uploads/Cathode.png

为了实现更高的真实感,我想单独绘制扫描线。通过这种方式,它会是这个样子的时候极大地放大:

Shot 3

所以我的问题是:这将是实现这一目标(即绘制这些颗粒感闪亮的灯光在曲面的最佳策略高帧率)与OpenGL?

+8

只是在着色器中做。有一些正弦函数会影响屏幕“线条”的亮度或类似的东西。 – Bart

回答

1

我应该指出,并非所有终端都有CRT(这是造成凸起的原因)。高端终端有相对平坦的CRT。另一方面,真正廉价的终端有点烦人的滚动横条。

我最美好的回忆是在SONY Trinitron终端上编程,它在水平扫描线上没有亮度问题,但像素之间的垂直间距非常明显。


这里是东西看起来像孔栅CRT显示器:

  • 我还没有看到任何CRT模拟有史以来复制这虽然着色器。


对我来说,有不止一种方法对皮肤有CRT ...你可能想模仿点阵格,变暗交替场,有一个水平线慢慢滚动向上/向下画面,应用枕形失真来模拟非平坦的CRT。

无论如何,请不要将此视为绘图灯。将基本文本绘制到FBO中,然后调整每个像素的亮度并在片段着色器中应用枕形失真。

要在最终屏幕截图中实现效果,您需要的不仅仅是扫描线。你还必须模拟阴影掩码点阵,你可以用一个简单的纹理来做到这一点。