【问题标题】:Fastest way to draw one million pixels in openGL 4?在openGL 4中绘制一百万像素的最快方法?
【发布时间】:2014-10-08 06:45:20
【问题描述】:

我开始使用 opengl,我想知道如何在不低于 10 fps 的情况下在屏幕上放置超过 100 万像素。目前我已经设置了一个 std::vector ,它在主循环的更新阶段接收每个像素信息,然后在它呈现之前。 渲染阶段如下所示: glBufferData(GL_ARRAY_BUFFER, sizeof(float)*data.size(), &data[0], GL_DYNAMIC_DRAW); 然后我glDrawArrays

每个像素都有颜色和二维位置。有没有更快的绘制一百万像素的方法?我使用动态绘图是因为我想在每个单独的像素给出随机颜色时更改屏幕上的颜色。有点像坏频道上的电视。

【问题讨论】:

  • 一百万像素大约是 1024x1024,那么带纹理的四边形呢?
  • 而不是通过向量发送该数据..不能在片段着色器中计算它。那将是最快的方式!
  • 这就是我的目标,绘制一个四边形并在片段着色器中计算纹理信息...
  • 我在我的opengl程序员指南的开头,看来我得再读一些

标签: performance opengl graphics


【解决方案1】:

不要将颜色存储在数组中,而是在片段着色器中计算它们。

您创建一个噪波纹理并为其采样器使用包裹。您还应该传入一些改变每一帧的制服,并以非线性方式将它们与窗口坐标结合起来。

【讨论】:

  • 我可以有两个不同的 GL_TEXTURE_2D 来复制信息吗?如何访问新的不同缓冲区?我应该制作一个新的 vbo 吗?
  • @user2893243 你不会使用 VBO,而是专门使用纹理(最多你将有 4 个顶点来创建一个全屏四边形),但是是的,你可以有更多的纹理和制服来作为你的基础噪音
  • 只是出于好奇,如果我不使用纹理,如何解决像素间距越来越大的问题,因为我将窗口大小调整为更大
  • 你的意思是像素只是缩小了?您应该使用一些高频触发函数(position.x*5000)在输出中添加一些高频噪声
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2016-08-09
相关资源
最近更新 更多