1

我们正在使用 OpenTK、C# 和 Visual Studio 2010。我们需要询问图形设备是否支持 texture2DArray,以及它可能支持哪些抗锯齿模式。任何帮助将不胜感激。

4

1 回答 1

3

对纹理数组的原始支持是GL_EXT_texture_array的一部分。这已作为 3.0 版的一部分引入 OpenGL 核心。

因此,您可以检查您的 OpenGL 版本是否大于或等于 3.0,或者扩展字符串是否包含GL_EXT_TEXTURE_ARRAY. 要完整,您需要进行 2 次测试,因为可以通过任何一种方式公开支持(或者您可以决定仅在支持 OpenGL 3.0 的设备上运行)。

对于多采样问题,它相当棘手。多重采样历来是在平台级别完成的,因为它与帧缓冲区属性相关联。我假设您在 Windows 上定位 GL,但我不知道这在 c# 中是如何完成的。

查看http://www.opengl.org/wiki/Multisampling以了解在 C 中为初始帧缓冲区执行此操作的相当复杂的方法。

现在... 由于引入了帧缓冲区对象,核心 GL 还具有分配帧缓冲区的能力,包括多采样表面(核心 3.0 中的第 4.4 节)。如果您使用此功能,则使用 完成分配glRenderbufferStorageMultisample,并通过返回支持的最大样本数glGetIntegerv(GL_MAX_SAMPLES)

于 2010-10-12T07:29:54.393 回答