GPU供应商之间的OpenGL确定性渲染 [英] OpenGL deterministic rendering between GPU vendor

查看:103
本文介绍了GPU供应商之间的OpenGL确定性渲染的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用OpenGL编写科学的成像应用程序.

I'm currently programming a scientific imaging application using OpenGL.

我想知道当我的代码(C ++/OpenGL和简单的GLSL)在不同的硬件(ATI vs NVidia,各种NVidia世代)上执行时,OpenGL渲染(以从FBO中检索的像素而言)是否应该完全确定.和各种操作系统)?

I would like to know if OpenGL rendering (in term of retrieved pixel from FBO) is supposed to be fully deterministic when my code (C++ / OpenGL and simple GLSL) is executed on different hardware (ATI vs NVidia, various NVidia generations and various OS)?

更确切地说,每次在任何硬件(可以运行基本的GLSL和OpenGL 3.0的硬件)上运行代码时,我都需要 exact 相同的像素缓冲区...

More precisely, I'd need the exact same pixels buffer everytime I run my code on any hardware (that can runs basic GLSL and OpenGL 3.0)...

有可能吗?我应该考虑一些建议吗?

Is that possible? Is there some advice I should consider?

如果不可能,是否有特定品牌的视频卡(也许是Quadro?)可以在更改主机OS时做到这一点?

If it's not possible, is there a specific brand of video card (perhaps Quadro?) that could do it while varying the host OS?

推荐答案

摘自OpenGL规范(版本2.1附录A):

From the OpenGL spec (version 2.1 appendix A):

OpenGL规范不精确.因此,它不能保证由不同GL实现产生的图像之间的精确匹配.但是,在某些情况下,该规范确实指定了由同一实现产生的图像的完全匹配.

The OpenGL specification is not pixel exact. It therefore does not guarantee an exact match between images produced by different GL implementations. However, the specification does specify exact matches, in some cases, for images produced by the same implementation.

如果禁用所有抗锯齿和纹理处理,则很有可能在各个平台上获得一致的结果.但是,如果需要抗锯齿或纹理化或100%像素完美保证,请仅使用软件渲染: http://www. mesa3d.org/

If you disable all anti-aliasing and texturing, you stand a good chance of getting consistent results across platforms. However, if you need antialiasing or texturing or a 100% pixel-perfect guarantee, use software rendering only: http://www.mesa3d.org/

这篇关于GPU供应商之间的OpenGL确定性渲染的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆