D3D

不知何年何月得常所愿, 得,得,得,得常所愿

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  52 随笔 :: 0 文章 :: 205 评论 :: 0 Trackbacks
HRESULT D3DXCreateTexture(
LPDIRECT3DDEVICE9 pDevice,
UINT Width,
UINT Height,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
LPDIRECT3DTEXTURE9 * ppTexture
);

void createTexture(int texWidth, int texHeight)
{
    HRESULT hr 
= 0;

    hr 
= D3DXCreateTexture(
        _device,
        texWidth, texHeight,
        
0
        
0
        D3DFMT_A8L8,
//纹理格式
        D3DPOOL_MANAGED, &_tex);

    
if(FAILED(hr))
        
return false;

    D3DSURFACE_DESC textureDesc; 
    _tex
->GetLevelDesc(0&textureDesc);

    
if(textureDesc.Format != D3DFMT_A8L8) 
        
return false;

    D3DLOCKED_RECT lockedRect;
    _tex
->LockRect(0&lockedRect,00);         

    
//使用类型要对应(unsigned short --- D3DFMT_A8L8)
    unsigned short* imageData = (unsigned short*)lockedRect.pBits;

    
for(int i = 0; i < texHeight; i++){
        
for(int j = 0; j < texWidth; j++){

            
//Pitch数据的总长度
            int index = i * lockedRect.Pitch / 2/*D3DFMT_A8L8 二字节*/ + j;
            
if(i < 64)
                imageData[index] 
= 0x00;
            
else
                imageData[index] 
= 0xFF;
        }
    }

    _tex
->UnlockRect(0);
    
    
//保存纹理
    hr = ::D3DXSaveTextureToFile("ABC.jpg", D3DXIFF_JPG, _tex, NULL);
    
if(D3DERR_INVALIDCALL == hr)
        ::MessageBox(NULL,NULL,NULL,NULL);

}
posted on 2008-12-12 11:08 王博炜 阅读(1785) 评论(3)  编辑 收藏 引用 所属分类: D3D

评论

# re: D3DXCreateTexture 2008-12-12 20:03 mugong
楼主写了一个函数,啥也没说,都看不懂  回复  更多评论
  

# re: D3DXCreateTexture 2008-12-13 14:35 CK
如果把DirectX用在这方面我觉得是浪费了.
而且纹理的长宽得是2的整数次方,有限制,会被拉伸等.
若是对图像进行操作,用GDI+我觉得是最好的选择,提供了大量的高层的图像操作.
若是为了效率以及显示效果,DirectX才是首选.  回复  更多评论
  

# re: D3DXCreateTexture[未登录] 2009-09-24 22:05 L
太简单了,说点有深度的理论知识  回复  更多评论
  


专题:iPad jQuery Chrome OS

博客园首页  IT新闻  闪存  学英语
标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
每天10分钟,轻松学英语
网站导航: