Questions tagged «opengl»

对于涉及使用OpenGL图形库的问题。

1
在GPU上使用查找表时的最佳内存访问?
我正在为单身汉的项目探索GPU上的等值面算法(特别是仅关注二进制输入/输出体素数据,而不是实值字段)。因此,我有一个良好的旧行军多维数据集的CPU实现,并在OpenFrameworks中运行,现在处于尝试将其移植到GLSL计算着色器的阶段,并在下潜之前考虑了陷阱。我只写了vert和frag着色器在此之前,这对我来说都是全新的。 我的第一个问题是如何有效地在工作组中的数十个或数百个线程中使用查找表?我了解GPU可以为不同的任务提供不同类型的内存,但不能完全确定每个GPU的工作方式或使用哪种类型。 Paul Bourke的经典copypasta表是256 * 16的数组,因此,如果使用标量字节类型,则可以将其打包为4kb纹理或SSBO。 问题是,如何阻止不同的线程相互跳闸?每个工作组中的许多多维数据集都可能具有相同的配置,因此尝试同时访问缓冲区中的相同位置。有解决方法或优化来解决吗?

1
现代的显示列表等效项是什么?
显示列表是OpenGL的一项功能,从理论上讲,可以通过存储一组命令供以后使用来加速API的任何部分。以我的理解,就当前减少驱动程序开销的努力而言,这很有意义。 虽然在3.1版中不推荐使用显示列表。现代API的等效功能是什么,DirectX是否提供类似的功能?如果再也没有这样的功能,那么原理是什么?

1
使用所有可用的纹理单位是否是一种好习惯?
当将多个纹理应用于网格时(例如凹凸贴图),我通常将纹理绑定到前几个固定纹理单元,例如:diffuse = unit 0,bump = unit 1,specular = unit 2,然后继续将其重复使用具有不同纹理的不同网格。但是我一直想知道为什么glActiveTexture支持这么多的纹理单位(在上一个链接中,它至少说80个)。 因此,我想到管理纹理的一种可能方法是将不同的纹理绑定到每个可用的单元,并使它们保持启用状态,只是更新统一采样器索引。通过减少纹理开关的数量,可以提高渲染性能。如果纹理的数量少于最大纹理单位,则无需解绑纹理。 这是实时OpenGL应用程序的标准做法吗(我相信这也适用于D3D)?采用这种方法是否会对性能产生不明显的影响?可能是内存开销?
9 opengl  texture 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.