performance - OpenGL在渲染“虚拟画廊”(纹理)方面的性能

标签 performance opengl

我有相当数量(120-240)的640x480图像,它们将在3D环境中显示为带纹理的平坦表面(4个顶点多边形)。在给定的框架中,其中约30-50%可见。他们有可能跨越。环境中将没有其他东西。

问题是-现代的和/或使用了几年(例如Radeon 9550)的GPU是否可以解决这个问题,我期望什么帧速率?我的目标是20FPS,但是30-40会很好。将分辨率更改为320x240会使它更有可能发生吗?

我以前没有关于现代GPU上3D图形性能问题的经验,很不幸,我必须做出设计选择。我不想浪费时间去做一些不可能的事情:-)

最佳答案

假设您具有RGB纹理,则纹理数据至少应为640 * 480 * 3 * 120字节= 105 MB,这应该适合较新的图形卡的VRAM而无需交换,因此这不会成为问题。但是,纹理查找可能会有些问题,但是如果不尝试,很难判断出来。假设您只需要处理105 MB的50%,即大约50 MB(非常粗略的估计),而目标为20 FPS则意味着20 * 50MB / sec =大约1GB / sec。即使在较旧的硬件上,这也应该可以实现吞吐量。

阅读较旧的Radeon 9600 XT的规格时,它会显示2000Mpixels / sec的峰值填充速率,如果我没记错的话,您需要的填充速度远低于100Mpixels / sec。峰值内存b / w指定为9.6GB / s,而您大约需要1 GB / s(如上所述)。

它会认为,如果正确完成,这应该是可能的-尤其是。当前的硬件应该完全没有问题。

无论如何,您都应该简单地尝试一下:只需很少的代码行就可以轻松地加载一些随机的120纹理并以120个四边形显示它们。

关于performance - OpenGL在渲染“虚拟画廊”(纹理)方面的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010185/

相关文章:

performance - 在 kubernetes 上查找和设置应用程序资源限制/请求的最佳方法

c - 如何快速混合存储为无符号 32 位整数的两种 RGB 无符号字节颜色?

c++ - 填充整个小部件 opengl

c++ - GL_DRAW/READ_FRAMEBUFFER 与 GL_FRAMEBUFFER?

c++ - 如何在两个不同的 borland builder 窗口中绘制相同的 opengl 图形?

javascript - Object.observe() 如何影响性能?

java - 使用循环设置 Bean 的属性

performance - HTTPS 会减慢我的 Web 应用程序的页面加载速度吗?

c++ - gluPerspective 和 glOrtho 都没有任何效果

opengl - 在OpenGL中绘制Hermite曲线