c++ - 我应该始终对 OpenGL 中的所有纹理使用 GL_ARGB 格式吗?

标签 c++ windows opengl

这一直困扰着我一段时间......而且很难真正看到性能上的任何差异,所以我在这里问:

如果我的图像不使用 alpha channel ,我应该使用“GL_RGB”将它们保存在 GFX 卡内存中,还是应该使用“GL_ARGB”因为它的完整 32 位 block 处理速度更快?

或者 GFX 卡是否会自动将 24 位图像转换为 32 位图像以缩短渲染时间?

编辑:我没有性能问题,但我只想以最好的方式做到这一点!我还想确保该程序在旧显卡上呈现良好,而不必像新显卡那样优化东西。

最佳答案

选择适合您的纹理数据的格式,让显卡驱动程序操心细节。不要试图智取它。 OpenGL 实现非常优化,将为您做出所有必要的决定以获得最佳性能,无论这意味着将所有纹理转换为 32bpp 还是其他一些内部格式。

如果您发现遇到性能问题,请使用 gDEBugger 等工具解决你的性能瓶颈。您的纹理格式不太可能成为瓶颈。

编辑:如果问题只是内存压力,那么您的纹理太多太大了。就那么简单。使用压缩、使用较低质量(每个 channel 位数较少)的纹理或使用较小的纹理。

关于c++ - 我应该始终对 OpenGL 中的所有纹理使用 GL_ARGB 格式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3080049/

相关文章:

c++ - OpenGL 模板 : Availability of GL_REPLACE_VALUE_AMD

c# - Monotouch OpenGL 类型和 Cocos2d

c++ - Opengl 在移动 3D 场景中绘制 2D 矩形

c++ - 有理函数级数展开的最佳算法

c++ - 是否使用空 std::optional<string> UB?

C++指针数组结构

c++ - 如何获取当前用户权限组?

java - 在windows java中获取下载文件夹的路径

c++ - 找到复 vector 中的最低实值

xml - 为 SAML 签名和加密创建 x509.v3 自签名证书,Windows 8 R2