c++ - 在 OpenGL 中绘制大量像素

标签 c++ opengl graphics

我一直在研究一些声音处理代码,现在我正在做一些可视化。我完成了 spectrogram谱图,但我绘制它的方式太慢了。

我正在使用 OpenGL 进行 2D 绘图,这使得寻求帮助变得更加困难。另外,我对 OpenGL 很陌生,所以我不知道标准的完成方式。

我将每个像素的 r、g、b 值存储在一个大矩阵中。 每次我得到一个小的声音片段时,我都会对其进行处理并将其转换为像素列。一切都向左移动 1 个像素,新行放在末尾。

每次重绘时,我都会循环设置颜色并单独绘制每个像素,这似乎是一种非常低效的方法。

有更好的方法吗?有什么方法可以简单地将一堆像素移过来吗?

最佳答案

提高绘图速度的方法有很多。 最简单的方法是分配一个 RGB 纹理,您将使用屏幕对齐的纹理四边形绘制它。 每次您想绘制一条新线时,您都可以使用 glTexSubImage2d 加载纹理的新子集,然后重新绘制四边形。

关于c++ - 在 OpenGL 中绘制大量像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111485/

相关文章:

c++ - 三次贝塞尔曲线实现

multithreading - 对等通信线程

c++ - 在 C++ 中将 2D 屏幕坐标转换为 3D 空间坐标?

python - 如何使用 Pyglet 绘制透明图元

java - Swing 组件是如何在内部创建、布局、重绘、通知事件的,...?

使用Android SDK工具后Android图标比其他图标小很多?

c++ - 使用模板计算 2 个数字的 LCM

c++ - 尝试使用 for 循环输出 10 行

c++ - 如何在宏中获取智能指针的类型?

java - 模型- View - Controller 如何适应 OpenGL 依赖性?