显存与纹理内存详解

                            根据桌面>右键属性>设置>高级>适配器,可知当前电脑的显卡名,显卡内存(也叫显存)。显存 为什么重要? 

                           1, 系统 内存只是暂时存放数据的地方,不能处理数据;要想显示数据,还得把数据传输到显卡内存里!

                          2, 每个3D 显卡实际只有有限的内存(常见的有2、16、32、64、128MB),而这些内存要存储前端和后端缓冲区,Z 缓冲区,还有所有的令人惊奇的纹理。 好吧,让我们看一些数字…
                 比如你想让你的游戏看起来最好,所以你想要让它以32位屏幕, 1280x1024分辨率和32位 Z- 缓冲跑起来。 好,屏幕上每个像素4个字节,外加每个像素4字节的Z-缓冲,因为都是每像素32位。我们有1280x1024 个像素 – 也就是 1,310,720个像素。基于前端缓冲区和Z-缓冲区的字节数,这个数字乘以8,是 10,485,760字节。包括一个后端缓冲区,这样是 1280x1024x12, 也就是 15,728,640 字节, 或 15MB。 在一个 16MB 显存的显卡上,就只给我们剩下1MB 来存储所有的纹理。 现在如果最初的纹理是真32 位或 4字节宽,那么我们每幀能在显卡上存储 1MB/4字节每像素 = 262,144个像素。这大约是4 个 256x256 的纹理页面。这就是显存重要的原因,其实由此也可以由此推算有限的纹理内存到底是多少(也只是大概)。

                      

                确切的说,如何使用显存是显卡的事情,对于VC程序设计来说,我们不必去关心。但是程序里需要使用纹理的话,显卡内存就需要我们关心了。

              什么是纹理内存?我觉得应该是指用于存放纹理的显存。在渲染过程中,显存可能被分配为很多不同的用途,比如作为顶点缓存、索引缓存、纹理缓存、模板缓存..那么纹理内存,应该就是指纹理缓存。 而将显存中的那一部分作为哪个用途,那是显存自动分配的.   

               好消息是 if you're loading a lot of different textures, especially if they're large, as long as you don't have all of your textures onscreen at once: both OpenGL and DirectX are supposed to automatically evict textures from graphics memory as needed. 就是说,当有许多个纹理对象的时候,会自动的把当前需要显示的纹理对象放到显卡内存里,作为纹理内存的。其他的会被驱逐出显卡内存。

          但是,坏消息是if you're loading a lot of different textures, especially if they're large, you  have all of your textures onscreen at once,some graphics drivers have major bugs that manifest as you start to approach the limit of your graphics memory, causing strange rendering artifacts or even crashes.。很明显,一次性需要显示的纹理所需要的纹理内存又不能从显存里获取到(因为现在显存已经用完了),所以会说显存不足。

           总之,显存是有限的,那么其中的纹理内存也是有限的,特别是供你编写的应用程序使用的纹理内存是有限的,For these reasons, it may be useful to limit the amount of graphics memory your application uses。具体方法有:

               1) 选择显存大一点的显卡;

              2)降低屏幕的分辨率和颜色质量,不使用Z缓冲。——这一条最不现实和可行,因为这样的话,图像质量可能就差得多了。

              3)在使用纹理的程序代码里,可以使用纹理调色板、纹理压缩等技术(也需要显卡同步支持才行)可以大大减少所需的纹理内存(to 1/4 or 1/8 of the original)!

       参考文章:

    1.http://www.panda3d.org/manual/index.php/Texture_Management

    2. http://dev.gameres.com/Program/Abstract/GEanatomy3.htm

 

           PS:     “ In some integrated graphics cards, the "graphics memory" is actually your system memory”。 对于这句话的理解,我认为不能认为集成显卡的显存就可以无限扩展,因为本质上,是集显显卡自己提供一部分,然后占用系统内存一部分,合二为所谓的显存。占用系统内存一部分的这部分显存的大小必须是有限的!

   关于独立显卡与集显的区别参见:http://wenda.tianya.cn/wenda/thread?tid=698452acc00cd93c








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
f1018纹理分配失败是指在运行视频游戏或应用程序时,计算机的视频内存不足以分配纹理所需的内存空间。纹理是指游戏或应用程序中用于表现物体表面细节和颜色的图像。 当计算机的视频内存不足时,系统无法为纹理分配足够的内存空间,导致f1018错误的出现。这可能会导致游戏或应用程序无法正常运行或显示图像不清晰。 要解决f1018纹理分配失败的问题,可以尝试以下方法: 1. 检查系统要求:确保计算机的硬件能够满足游戏或应用程序的系统要求,特别是视频内存的需求。如果视频内存不足,可以考虑升级显卡或添加额外的内存。 2. 降低图形设置:在游戏或应用程序的设置中,尝试将图形设置调至较低的级别。这将减少纹理的使用量,释放一部分视频内存。 3. 关闭其他应用程序:关闭其他占用视频内存的应用程序,以释放更多的视频内存供游戏或应用程序使用。 4. 更新显卡驱动程序:去显卡制造商的官方网站下载并安装最新的显卡驱动程序。驱动程序的更新有时可以解决与视频内存相关的问题。 5. 清理系统垃圾文件:使用系统工具或第三方清理工具清理计算机上的垃圾文件和临时文件,以释放硬盘空间和缓解视频内存不足的问题。 总结:f1018纹理分配失败视频内存不足的错误可以通过升级硬件、调整图形设置、关闭其他应用程序、更新显卡驱动程序和清理系统垃圾文件等方法来解决。如果以上方法无效,可能需要升级计算机的硬件或寻求专业的技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值