用dx怎么从内存载入RGB格式的图片?

dfdddddddddddd 2014-08-14 10:12:08
	in = cvLoadImage("24bpp_1920x1200_1.bmp", 1);

HRESULT err;
IDirect3DTexture9 * texture = NULL;
///D3DFMT_L8, D3DFMT_R8G8B8
err = D3DXCreateTexture(g_pd3dDevice, in->width, in->height, 1, 0 , D3DFMT_R8G8B8, D3DPOOL_MANAGED, &g_pTexture);
D3DLOCKED_RECT lockRect;
RECT rect;

err = g_pTexture->LockRect(0, &lockRect, NULL, 0);//I have specified the format is RGB, then why does lockRect.Picth = 7680?

memcpy(lockRect.pBits, in->imageData, in->widthStep*in->height);
if(FAILED(g_pTexture->UnlockRect(0)))
{
///
}


1 这样只能载入灰度图或RGBA格式的图片,
可以看到, 我已经选了RGB格式了, 但执行完g_pTexture->LockRect(0, &lockRect, NULL, 0);后, lockRect.Pitch=7680, 这好像是当成4通道了一样

2 另外我还想像Dx_june10 sdk 里的示例"\DXSDK\Samples\InstalledSamples\Textures"那样可以载入更大尺寸的图片

应该怎么做?

我想实现的是显示视频画面的程序, 所以只能从内存载入
...全文
362 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfdddddddddddd 2014-08-14
  • 打赏
  • 举报
回复
我知道可以给输入图片做个格式转换, 但这没有必要, dx一定是支持RGB的, 只是不知道方法. 求方法啊
dfdddddddddddd 2014-08-14
  • 打赏
  • 举报
回复
引用 1 楼 jiangcaiyang123 的回复:
虽然不太了解视频,但是从内存和资源中载入图片并创建纹理是可能的。 DX有相关的API。 D3DXCreateTextureFromResource D3DXCreateTextureInMemory 好像是这些函数名吧,看看MSDN。
我贴的代码能用的, 但RGB格式不行, 你推荐的两个函数都不能用在视频画面显示, 其实第二个函数根本不存在
彩阳 2014-08-14
  • 打赏
  • 举报
回复
虽然不太了解视频,但是从内存和资源中载入图片并创建纹理是可能的。 DX有相关的API。 D3DXCreateTextureFromResource D3DXCreateTextureInMemory 好像是这些函数名吧,看看MSDN。

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧