找回密码
 立即注册
查看: 114|回复: 3

TrafficMonitor 插件显示当前hdr状态

[复制链接]

710

主题

0

回帖

710

积分

00话痨hs000

积分
710
发表于 2023-6-29 16:54:24 | 显示全部楼层 |阅读模式
因为需要知道当前系统的hdr开关状态,本想单独开发一个的,没想到 TrafficMonitor  支持自己开发插件,所以整了个插件。
hdr快捷切换开关是 win + alt + B

链接:https://pan.baidu.com/s/1N7K5ze98c_AR2SbOkeXILw
提取码:w1r5














代码就是用这个 TrafficMonitor 自带的插件demo代码改的。关键代码如下:
  1. bool CheckDisplayHDRSupport(){    HRESULT hr;    ComPtr<IDXGIFactory4> m_dxgiFactory;    hr = CreateDXGIFactory2(0, IID_PPV_ARGS(&m_dxgiFactory));    if (FAILED(hr))    {        return false;    }    // Retrieve the current default adapter.    ComPtr<IDXGIAdapter1> dxgiAdapter;    hr = m_dxgiFactory->EnumAdapters1(0, &dxgiAdapter);    if (FAILED(hr))    {        return false;    }    UINT i = 0;    ComPtr<IDXGIOutput> currentOutput;    ComPtr<IDXGIOutput> bestOutput;    float bestIntersectArea = -1;    bool bRet = false;    while (dxgiAdapter->EnumOutputs(i, &currentOutput) != DXGI_ERROR_NOT_FOUND)    {        bestOutput = currentOutput;        ComPtr<IDXGIOutput6> output6;        hr = bestOutput.As(&output6);        if (FAILED(hr)) {            continue;        }        DXGI_OUTPUT_DESC1 desc1;        hr = output6->GetDesc1(&desc1);        if (FAILED(hr)) {            continue;        }        bRet = desc1.ColorSpace == DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020;        if (bRet) break;               i++;    }    //m_dxgiFactory->Release();    return bRet;}void CCustomDrawItem::DrawItem(void* hDC, int x, int y, int w, int h, bool dark_mode){    //绘图句柄    CDC* pDC = CDC::FromHandle((HDC)hDC);    //矩形区域    CRect rect(CPoint(x, y), CSize(w, h));        auto b = CheckDisplayHDRSupport();    LPCWSTR LL = b?L"hdr":L"nohdr";    //设置颜色    COLORREF color1{ dark_mode ? RGB(255, 143, 107) : RGB(227, 81, 16) };    COLORREF color2{ dark_mode ? RGB(183, 241, 96) : RGB(83, 131, 11) };    COLORREF color3{ dark_mode ? RGB(158, 218, 251) : RGB(6, 111, 168) };    CPen aPen, * pOldPen;    aPen.CreatePen(PS_SOLID, 1, color1);    pOldPen = pDC->SelectObject(&aPen);    pDC->DrawText(LL, &rect, DT_LEFT);    pDC->SelectObject(pOldPen);}
复制代码

链接器里,乱七八糟依赖项:
  1. dxgi.libd3d12.libd3d11.libd2d1.libdwrite.libdxguid.lib
复制代码

延迟加载:
  1. d3d12.dll
复制代码

参考:
  1. https://github.com/zhongyang219/TrafficMonitor/wiki/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97https://github.com/zhongyang219/TrafficMonitorhttps://github.com/microsoft/DirectX-Graphics-Samples.git
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

0

主题

934

回帖

0

积分

新手上路

积分
0
发表于 2023-6-29 17:04:16 | 显示全部楼层
现在通过windows hdr校准,可以自动桌面sdr 但是亮度调节只能在hdr选项里面设置,之前用的twinkle tray就不能在hdr状态下,调节sdr亮度。

不知道我说明白没,有啥可以方便的调节办法没?

试试楼主这个,感谢分享。
回复 支持 反对

使用道具 举报

0

主题

967

回帖

0

积分

新手上路

积分
0
发表于 2023-6-29 17:10:35 | 显示全部楼层
没,可能我没这个需求。哈哈,从来没用过校准。
我一般不通过windows调节亮度,以前还偶尔设置显示器亮度,现在没弄过了。
你可以截个图瞧瞧。
回复 支持 反对

使用道具 举报

0

主题

1038

回帖

0

积分

新手上路

积分
0
发表于 2023-6-29 17:13:18 | 显示全部楼层
https://gitee.com/zhongyang219/T ... creenshots/main.png


论坛插图 插不进去~

1.84.1 x64版本

怎么都没找到,显示设置呢



找到了,要放在任务栏,才能看到
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|翻墙党

GMT+8, 2026-9-27 04:40 , Processed in 0.084926 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表