<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>2024/10 on アルゴイメージ</title>
    <link>https://www.algoimage.jp/archives/2024/10/</link>
    <description>Recent content in 2024/10 on アルゴイメージ</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Sat, 02 Nov 2024 21:43:27 +0900</lastBuildDate>
    <atom:link href="https://www.algoimage.jp/archives/2024/10/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SDRとHDRで見た目を同じにするには</title>
      <link>https://www.algoimage.jp/posts/2024/10/20/how-to-make-hdr-and-sdr-look-the-same/</link>
      <pubDate>Sun, 20 Oct 2024 19:28:36 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/20/how-to-make-hdr-and-sdr-look-the-same/</guid>
      <description>&lt;p&gt;前回、HDRのディスプレイで、R10G10B10A2のフォーマットを描画することを試して、&#xA;とりあえず、R8G8B8A8よりも明るく表示されることは確認しました。&lt;/p&gt;&#xA;&lt;p&gt;では、どのように調整することで、SDRとHDRの見た目を近づけることができるのか、試したいと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12でHDR600のディスプレイに表示する</title>
      <link>https://www.algoimage.jp/posts/2024/10/18/display-on-hdr600-display-using-direct3d12/</link>
      <pubDate>Fri, 18 Oct 2024 18:08:59 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/18/display-on-hdr600-display-using-direct3d12/</guid>
      <description>&lt;p&gt;前回に続いて、ディスプレイ関連です。&lt;/p&gt;&#xA;&lt;p&gt;前回も書きましたが、最近買ったこのディスプレイは、HDR600に対応しています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://amzn.to/4hng0rZ&#34;&gt;Dell AW2724DM 27インチ Alienware ゲーミングモニター&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;HDR600の説明は以下の記事などが分かりやすいです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12でG-SYNC Compatibleを試す</title>
      <link>https://www.algoimage.jp/posts/2024/10/17/try-gsync-compatible-with-direct3d12/</link>
      <pubDate>Thu, 17 Oct 2024 16:50:12 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/17/try-gsync-compatible-with-direct3d12/</guid>
      <description>&lt;p&gt;前回までに、フルスクリーンモードで自由にリフレッシュレートを変更できるようになりましたので、&#xA;今回は、可変リフレッシュレートの動作を確認したいと思います。&lt;/p&gt;&#xA;&lt;p&gt;私が使っているディスプレイは2台ありまして、1台は最近買ったこのディスプレイです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12におけるダブルバッファとトリプルバッファの違い</title>
      <link>https://www.algoimage.jp/posts/2024/10/16/difference-between-double-and-triple-buffers/</link>
      <pubDate>Wed, 16 Oct 2024 17:06:06 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/16/difference-between-double-and-triple-buffers/</guid>
      <description>&lt;p&gt;前回までに、リフレッシュレートを自由に設定できるようになりましたので、&#xA;今回は描画のfpsを自由に設定できるようにします。&lt;/p&gt;&#xA;&lt;p&gt;そのためには、ダブルバッファをトリプルバッファに変更して、VSync待ちをなくして、Presentを実行する必要があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>フレームレートを制御する</title>
      <link>https://www.algoimage.jp/posts/2024/10/15/control-frame-rate/</link>
      <pubDate>Tue, 15 Oct 2024 20:10:46 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/15/control-frame-rate/</guid>
      <description>&lt;p&gt;Direct3Dに限った話ではありませんが、PCのアプリは、フレームレートを制御する必要があります。&#xA;ゲーム機のように、固定されたリフレッシュレートに合わせてフレームレートを決めることができる場合は、&#xA;VSyncを待つだけでフレームレートを制御できますが、PCのモニターはリフレッシュレートが様々なので、アプリ自身がフレームレートを制御する必要がでてきます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12で解像度とリフレッシュレートを設定する</title>
      <link>https://www.algoimage.jp/posts/2024/10/14/set-resulution-and-refresh-rate-in-direct3d12/</link>
      <pubDate>Mon, 14 Oct 2024 14:14:50 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/14/set-resulution-and-refresh-rate-in-direct3d12/</guid>
      <description>&lt;p&gt;ウィンドウモードの場合は解像度はウィンドウサイズを変更することで設定できます。（もちろん、RTVは作り直します。）&#xA;しかし、ウィンドウ単位でリフレッシュレートは設定できません。&lt;/p&gt;&#xA;&lt;p&gt;リフレッシュレートを変更するためには、フルスクリーンで動いている必要があります。&#xA;前回の記事で、フルスクリーンへの切り替え方法を書きましたので、今回はその続きになります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12でフルスクリーンに切り替える</title>
      <link>https://www.algoimage.jp/posts/2024/10/13/switch-to-full-screen-in-direct3d12/</link>
      <pubDate>Sun, 13 Oct 2024 21:45:46 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/13/switch-to-full-screen-in-direct3d12/</guid>
      <description>&lt;p&gt;ChatGPT先生に聞きながら、Direct3D12でフルスクリーンモードとウィンドウモードの切り替えを実装しました。&#xA;F11キーを押すことで切り替えるというものです。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-C++&#34; data-lang=&#34;C++&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SampleApp g_app;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;extern&lt;/span&gt; IMGUI_IMPL_API LRESULT &lt;span style=&#34;color:#a6e22e&#34;&gt;ImGui_ImplWin32_WndProcHandler&lt;/span&gt;(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LRESULT CALLBACK &lt;span style=&#34;color:#a6e22e&#34;&gt;WndProc&lt;/span&gt;(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// ImGuiのウィンドウ処理&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (ImGui_ImplWin32_WndProcHandler(hWnd, message, wParam, lParam)) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; true;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt; isFullscreen &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt; isFullscreenInActive &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; WINDOWPLACEMENT windowPlacement &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(WINDOWPLACEMENT) }; &lt;span style=&#34;color:#75715e&#34;&gt;// ウィンドウモード時の位置とサイズを保存&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;switch&lt;/span&gt; (message) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; WM_DESTROY:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        g_app.SetFullscreenState(FALSE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        PostQuitMessage(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; WM_KEYDOWN:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (wParam &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; VK_F11) { &lt;span style=&#34;color:#75715e&#34;&gt;// F11キーで切り替え&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (isFullscreen) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// ウィンドウモードに戻す&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                g_app.SetFullscreenState(FALSE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                SetWindowLong(hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                SetWindowPlacement(hWnd, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;windowPlacement); &lt;span style=&#34;color:#75715e&#34;&gt;// 以前のウィンドウの位置とサイズを復元&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                SetWindowPos(hWnd, &lt;span style=&#34;color:#66d9ef&#34;&gt;nullptr&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, SWP_NOMOVE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_NOSIZE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_NOZORDER &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_FRAMECHANGED);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                isFullscreen &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// フルスクリーンモードにする&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                GetWindowPlacement(hWnd, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;windowPlacement); &lt;span style=&#34;color:#75715e&#34;&gt;// 現在のウィンドウの位置とサイズを保存&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                SetWindowLong(hWnd, GWL_STYLE, WS_POPUP &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; WS_VISIBLE); &lt;span style=&#34;color:#75715e&#34;&gt;// ウィンドウの境界線とタイトルバーを削除&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                SetWindowPos(hWnd, HWND_TOP, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, SWP_NOMOVE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_NOSIZE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_FRAMECHANGED);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;//SetWindowPos(hWnd, HWND_TOP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_FRAMECHANGED);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                g_app.SetFullscreenState(TRUE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                isFullscreen &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; true;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; WM_SIZE:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (wParam &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; SIZE_MINIMIZED) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            UINT width &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; LOWORD(lParam);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            UINT height &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; HIWORD(lParam);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            g_app.SetScreenSize(width, height);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; WM_ACTIVATE:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (wParam &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; WA_INACTIVE) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// ウィンドウが非アクティブになった場合&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (isFullscreen) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// フルスクリーンモードからウィンドウモードに戻す&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                g_app.SetFullscreenState(FALSE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                SetWindowLong(hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                SetWindowPlacement(hWnd, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;windowPlacement); &lt;span style=&#34;color:#75715e&#34;&gt;// 以前の位置とサイズを復元&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                SetWindowPos(hWnd, &lt;span style=&#34;color:#66d9ef&#34;&gt;nullptr&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, SWP_NOMOVE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_NOSIZE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_NOZORDER &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_FRAMECHANGED);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                isFullscreenInActive &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; true;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (wParam &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; WA_ACTIVE &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; wParam &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; WA_CLICKACTIVE) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// ウィンドウが再度アクティブになった場合&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (isFullscreenInActive) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// 必要ならフルスクリーンに戻す&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                SetWindowLong(hWnd, GWL_STYLE, WS_POPUP &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; WS_VISIBLE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                SetWindowPos(hWnd, HWND_TOP, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, SWP_NOMOVE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_NOSIZE &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; SWP_FRAMECHANGED);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                g_app.SetFullscreenState(TRUE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                isFullscreenInActive &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; DefWindowProc(hWnd, message, wParam, lParam);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Direct3D12でimguiを使ってみる</title>
      <link>https://www.algoimage.jp/posts/2024/10/08/using-imgui-in-direct3d12/</link>
      <pubDate>Tue, 08 Oct 2024 18:01:43 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/08/using-imgui-in-direct3d12/</guid>
      <description>&lt;p&gt;Direct3Dのアプリを書くには、デバッグ描画が必要です。デバッグ描画とは、例えば、画面上にフレームレートや様々な設定を描画するものです。&#xA;最終的な商品では使われないものなので、切り離してコンパイルできるように作りたいです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12アプリを書いてみる（３）</title>
      <link>https://www.algoimage.jp/posts/2024/10/04/build-direct3d12-apps-3/</link>
      <pubDate>Fri, 04 Oct 2024 19:12:07 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/04/build-direct3d12-apps-3/</guid>
      <description>&lt;p&gt;Direct3D12は、描画コマンドをコマンドリストにバッファリングして、まとめて実行するという形式となります。&#xA;毎フレーム実行する処理を簡易的に書くと以下のようになります。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-C++&#34; data-lang=&#34;C++&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// コマンドリストの開始&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    commandAllocator&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;Reset();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    commandList&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;Reset(commandAllocator.Get(), pipelineState.Get());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// 様々な描画コマンドを実行して、コマンドリストを作成&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// バッファリングされたコマンドリストを実行&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    commandList&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;Close();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ID3D12CommandList&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; commandLists[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; { commandList.Get() };&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    commandQueue&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;ExecuteCommandLists(_countof(commandLists), commandLists);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// スワップチェーンの表示&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    swapChain&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;Present(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Direct3D12アプリを書いてみる（２）</title>
      <link>https://www.algoimage.jp/posts/2024/10/04/build-direct3d12-apps-2/</link>
      <pubDate>Fri, 04 Oct 2024 12:20:52 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/04/build-direct3d12-apps-2/</guid>
      <description>&lt;p&gt;まず、Direct3D12のプログラムを説明する前に、Windowだけを表示するプログラムを書きます。&#xA;基本的には、CreateWindowでWindowを生成し、メインループでメッセージを処理するだけです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Direct3D12アプリを書いてみる（１）</title>
      <link>https://www.algoimage.jp/posts/2024/10/03/build-direct3d12-apps/</link>
      <pubDate>Thu, 03 Oct 2024 17:29:16 +0900</pubDate>
      <guid>https://www.algoimage.jp/posts/2024/10/03/build-direct3d12-apps/</guid>
      <description>&lt;p&gt;まず、Direct3D12のアプリをビルドするには、Direct3D12のヘッダファイルをインクルードして、ライブラリファイルをリンクする必要があります。&#xA;以前であれば、DirectX SDK というものをダウンロードして、VisualStudioのインクルードとリンクの設定を書けばよかったのですが、&#xA;今は、DirectX SDKはなくなってしまい、Windows SDK に含まれているようです。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
