如何选择DirectX像素格式
How to choose DirectX pixel formats?
我确实了解了后缓冲区的像素格式的概念。但是,使用未知格式和指定格式有什么区别:
(在DirectX 11中)dxgi_format_unknownvsdxgi_format_r8g8b8a8_unorm
(在DirectX 9中)D3DFMT_UNKNOWNvsD3DFMT_X8R8G8B8
未知格式是否允许图形适配器选择最合适的格式?
谢谢!
编辑:
我尝试了DirectX 9中的未知格式,它有效:
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof( d3dpp ) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferHeight = 480;
d3dpp.BackBufferWidth = 640;
d3dpp.hDeviceWindow = mHWnd;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
d3dpp.EnableAutoDepthStencil = TRUE;
我尝试了DirectX 11中的未知格式,它不起作用:
DXGI_SWAP_CHAIN_DESC sd;
sd.BufferDesc.Width = 640;
sd.BufferDesc.Height = 480;
sd.BufferDesc.RefreshRate.Numerator = 60;
sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferDesc.Format = DXGI_FORMAT_UNKNOWN;
sd.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
sd.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
sd.SampleDesc.Count = 1;
sd.SampleDesc.Quality = 0;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.BufferCount = 1;
sd.OutputWindow = mhMainWnd;
sd.Windowed = true;
sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
sd.Flags = 0;
您正在以窗口模式运行。来自DirectX9文档:
实际上,在窗口模式下,可以为BackbufferFormat指定D3DFMT_UNKNOWN。这告诉运行时间使用当前的显示模式格式,并消除了调用getDisplayMode的需求。
因此,D3DFMT_UNKNOWN只是表示"使用当前的显示设置"。DirectX 11似乎不支持这一点,并且有关其中模式的文档(以及您应该如何创建交换链)更为复杂。我认为您可以在DirectX11中选择Backbufferformat,无论实际显示格式如何,并且将自动发生转换。我想,现在可能有99%的显示器设置为x8r8g8b8格式。
相关文章:
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 如何使用 sdl2 快速绘制像素网格?
- 如何在C++中进行像素操作? - Linux
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 访问随机图像像素的快速方法,最多一次
- OpenCV 像素访问点与 at() - 不同的值
- 如何使用 freetype2 访问单色位图中的像素状态
- 提取肮脏的RGB像素缓冲区数据Directx
- 在 DirectX 11 中添加更多 Texture2D 作为像素着色器资源时遇到问题
- 如何选择DirectX像素格式
- PIX DirectX 11 调试像素错误
- 像素着色器中的 c++ DirectX 照明问题
- 如何加快C++DirectX像素的放置速度