基本的には、下記ブログの内容の要約です。
AutoHDR対応するための技術的要件
ゲームがDirectX 11またはDirectX 12を使用していること
最初に
本記事の作者はUnityを触った事すらありません!(重要です!)
C#
// C# Windows Auto HDR implementation sample
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
namespace WindowsAutoHDR
{
public partial class MainWindow : Window
{
// Win32 API constants and structures
private const int WM_APPCOMMAND = 0x0319;
private const int APPCOMMAND_ENABLE_HDR = 0x0000001E;
[StructLayout(LayoutKind.Sequential)]
private struct APPCOMMAND_HDR
{
public IntPtr hwnd;
public uint cbSize;
public int dwFlags;
}
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
public MainWindow()
{
InitializeComponent();
}
private void EnableHDRButton_Click(object sender, RoutedEventArgs e)
{
// Get the window handle
var window = new WindowInteropHelper(this);
var hwnd = window.Handle;
// Create the APPCOMMAND_HDR structure
var hdr = new APPCOMMAND_HDR();
hdr.hwnd = hwnd;
hdr.cbSize = (uint)Marshal.SizeOf(hdr);
hdr.dwFlags = 1; // 1: enable HDR, 0: disable HDR
// Marshal the structure to a pointer
var ptr = Marshal.AllocHGlobal(Marshal.SizeOf(hdr));
Marshal.StructureToPtr(hdr, ptr, false);
// Send the WM_APPCOMMAND message with the APPCOMMAND_ENABLE_HDR command
SendMessage(hwnd, WM_APPCOMMAND, IntPtr.Zero, ptr);
// Free the pointer
Marshal.FreeHGlobal(ptr);
}
}
}
やたら、NIKKEがHDR対応しているって言ってるけど違うよね?
はい。ごめんなさい。おっしゃる通りでございます。
今回のHDRはWindowsによるSDR画像をHDRに自動アップグレードする機能です。
Microsoftが頑張ってるよね?Shift-UP頑張ってないよね?
この内容をEnjinia向けに書くか迷いましたが、テスト工数!
コメント