惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
D
DataBreaches.Net
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
S
Secure Thoughts
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
腾讯CDC
GbyAI
GbyAI
G
Google Developers Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI

博客园 - 稻草人的麦田

[导入]仔细研究了lithtech中的根据类名创建对象 [导入]光照优缺点 [导入]蜗牛的笔试题目 [导入]一个开发休闲游戏的程序组人与分配方案 [导入]运动模糊的制作 [导入]格里高里的数学题 [导入]水彩化 [导入]伪 HDR/Blow [导入]描边,只是换了个过滤器而已 [导入]锐化模糊 [导入]卷积积分(转) [导入]再贴个圆形马赛克 [导入]马赛克 [导入]hlsl的浮雕效果 [导入]游戏出了一个demo [导入]图形文件的格式(转载) [导入] 一些色彩方面的知识 [导入]流浪歌手 [导入][转载]游戏引擎列表
[导入]显卡对于mipmap选择的研究
稻草人的麦田 · 2008-01-03 · via 博客园 - 稻草人的麦田

Posted on 2008-01-03 20:04  稻草人的麦田  阅读(2139)  评论()    收藏  举报

d3d本身提供了一个mipmap用于一幅图像生成多个表面,以便根据贴图距离屏幕的远近来进行不同表面的选择,

节约显存,一直用起来挺方便,因为是硬件帮助我们完成的,可是如果想要自己写一个纹理管理器的时候,就

产生了这样一个思考,什么时候切换mipmap的等级哪?这个问题挺难想的,一张图像有好几个等级的话,那么

这个图像在不同的深度是否需要进行mipmap哪?虽然一些很nb的游戏都是自己写的mipmap,然后自己去管理,

就像我公司用的lithtech引擎也是自己预先生成了一系列的mipmap,或者自己指定mipmap的数量,但是

lithtech有个问题就是不能自己写不同层级的mipmap的图像,其实我认为制作这个功能不用太费资源的,可能

是防止美术人员太自由发挥,从而不同层级的图像时会产生插值问题。
虽然近期还没有自己写纹理管理器的打算(都让显卡他们managed着先),但还是做了个实验,也是随便实验了

一下,结果发现一个显卡更加令人奇怪的事情,归纳是:一张图像可以每个象素选取不同层级的surface,而且

并不是深度大的地方一定选取的是level大的地方的层级(这个可能和纹理的复用方式有关,但肯定还有其他原

因)。这样子就可以归纳为,一个图像上的纹理在gpu上mipmap的选择也是逐象素选择的,也不知道对不对,可

能是自己用了shader的原因。
贴图如下:


我的选择是Level:0   红色 
          Level:1   绿色  
          Level:2   蓝色
其他层级黑色。共八个level

仔细看,就会发现我说的情况,看来水平还是差的太远,一直浮在上面没用的。

希望以后可以解决:我的测试代码如下:

 __int32 lc = g_pMeshTexture->GetLevelCount();
 D3DLOCKED_RECT LockedRect;
 D3DSURFACE_DESC pDesc;
 for(int lcc=0; lcc<lc; lcc++)
 {
  g_pMeshTexture->GetLevelDesc(lcc,&pDesc);
  //memset(LockedRect,0,sizeof(D3DLOCKED_RECT)*pDesc.Width*pDesc.Height);
  if( g_pMeshTexture->LockRect(lcc,&LockedRect,NULL,D3DLOCK_DISCARD) == D3D_OK )
  {
  DWORD *c = (DWORD*)(LockedRect.pBits);
  for(int i=0;i<pDesc.Width;i++)
  {
   for(int j=0;j<pDesc.Height;j++)
   {
   int index = i * LockedRect.Pitch / 4 + j;
   DWORD flags=lcc;
   switch(lcc)
   {
   case 0:
    c[index] = 0xffff0000 ; // red  
    break;
   case 1:
    c[index] = 0xff00ff00;
    break;
   case 2:
    c[index] = 0xff0000ff;
    break;
   default:
   c[index] = 0x00000000;
    break;
   }
 
   }
  }
  g_pMeshTexture->UnlockRect(lcc);
  }
 }

文章来源:http://songxiaoyu8.blog.163.com/blog/static/208181282008038354274