请问一个不同显卡用DirectDraw显示RGB/YUV图像的有关问题
请教一个不同显卡用DirectDraw显示RGB/YUV图像的问题
我现在做一个播放器,解码器解出来的数据有RGB/YUV420这三种格式,我现在用DirectDraw在某些显卡上只能显示RGB,而在另外一些显卡上又只能显示YUV420,请问该怎么做才让程序兼容所有的显卡?初次接触这些,对图像格式也不太了解.下边我把代码贴出来,请帮我看一下:
我用上面的代码创建对象和显示图像都没问题.只是我在GForce2 MX400的显卡上只能用RGB格式才能显示图像,用YUV在创建离屏表面时会出错.在Intel GMA950上可以正常显示YUV,RGB格式CreateObject可以成功但是图像不显示.
------解决方案--------------------
应该是显卡的能力的问题,不是所有的显卡都支持所有的格式的
你可以通过dx获取支持能力的啊
系统不支持的模式,是无法用硬件来使用的
软件模拟方式,而不是硬件加速方式下, 基本上这些模式都可以支持, 只是效率不高.
我现在做一个播放器,解码器解出来的数据有RGB/YUV420这三种格式,我现在用DirectDraw在某些显卡上只能显示RGB,而在另外一些显卡上又只能显示YUV420,请问该怎么做才让程序兼容所有的显卡?初次接触这些,对图像格式也不太了解.下边我把代码贴出来,请帮我看一下:
- C/C++ code
.h文件 #include <ddraw.h> DIRECTDRAW dd ; DDRAWCLIPPER dcClipper ; DDRAWSURFACE dsFront, dsBack ; DDSURFACEDESC ddsd ; HWND m_hArea ; .cpp文件 #define RGBFMT BOOL CreateObject() { //创建DirectDraw对像 HRESULT hr ; hr = DirectDrawCreate(NULL,
我用上面的代码创建对象和显示图像都没问题.只是我在GForce2 MX400的显卡上只能用RGB格式才能显示图像,用YUV在创建离屏表面时会出错.在Intel GMA950上可以正常显示YUV,RGB格式CreateObject可以成功但是图像不显示.
------解决方案--------------------
应该是显卡的能力的问题,不是所有的显卡都支持所有的格式的
你可以通过dx获取支持能力的啊
系统不支持的模式,是无法用硬件来使用的
软件模拟方式,而不是硬件加速方式下, 基本上这些模式都可以支持, 只是效率不高.