扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:longway 来源:天极开发 2007年10月16日
关键字: VC DirectShow 视频 图片处理
HRESULT d3d::SetTex(BYTE* pb) { if(!pTexture) return E_FAIL; // 纹理创建不成功 if(!pb) return E_FAIL; // 指针错误 // 锁定纹理 D3DLOCKED_RECT d3dlr; if (FAILED(pTexture->LockRect(0, &d3dlr, 0, 0))) return E_FAIL; BYTE* pTexBits = (BYTE*)d3dlr.pBits; // 取纹理数据区指针 UINT texPitch = d3dlr.Pitch; // 纹理的 Pitch UINT bmpPitch = bmpWid * 4; // 图片的 Pitch float xStep = float(bmpWid - 1) / float(texWid - 1); // float yStep = float(bmpHei - 1) / float(texHei - 1); // BYTE* pNewBits = pTexBits; BYTE* pOldBits = pb; BYTE* pNewPixel; BYTE* pOldPixel; // 最近点放大 for(int y = 0; y < texHei; y ++){ pOldBits = pb + int(yStep * y) * bmpPitch; // 定位 y pNewBits = pTexBits + y * texPitch; for(int x = 0; x < texWid; x ++){ pPixel = pOldBits + 4 * int(xStep * x);// 定位 x pNewPixel = pNewBits + 4 * x; pNewPixel[0] = pOldPixel[0]; pNewPixel[1] = pOldPixel[1]; pNewPixel[2] = pOldPixel[2]; pNewPixel[3] = 255;// 纹理的 alpha 值,如果启用透明,可更改实现透明效果 } } // 解锁纹理 if (FAILED(pTexture->UnlockRect(0))) return E_FAIL; return S_OK; } |
HRESULT d3d::CreateTex(int wid,int hei) { // 根据传入的宽高创建纹理 if(FAILED(D3DXCreateTexture(this->m_pd3dDevice,wid,hei,1,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&pTexture))){ return E_FAIL; } // 纹理描述 D3DSURFACE_DESC ddsd; if ( FAILED(pTexture->GetLevelDesc( 0, &ddsd ) ) ) { return E_FAIL; } // 核对纹理格式,规定为 A8R8G8B8 的 32bit ARGB 格式 if(ddsd.Format != D3DFMT_A8R8G8B8){ pTexture->Release(); pTexture = NULL; return E_FAIL; } texWid = ddsd.Width; // 纹理宽 texHei = ddsd.Height;// 纹理高 bmpWid = wid; // 图片宽 bmpHei = hei; // 图片高 return S_OK; } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者