トップページ > 記事閲覧
DrawOvalとSetDrawBlendModeについて
名前:たけしお 日時: 2026/01/11 10:54

遅ればせながら、本年もよろしくお願いいたします。 以前よりvisualstudio版を利用させていただいておりますが、いつの頃からか、DrawOvalに対してSetDrawBlendModeの設定が正しく反映されないようになりました。 具体的には、SetDrawBlendModeの直後にDrawOvalと他の図形描画関数(例えばDrawBox)を連続実行した時に、両者の描画結果が異なります。 DrawBoxだと期待通りの色になりますが、DrawOvalの方は、パラメータを1/2程度にしないと同等の色味になりません。 こちらのPC環境のせいであれば申し訳ありません。 お手すきの時にご確認いただけますでしょうか。
メンテ

Page: 1 |

Re: DrawOvalとSetDrawBlendModeについて ( No.1 )
名前:管理人 日時:2026/01/12 00:25

本年もよろしくお願いいたします m(_ _)m > 具体的には、SetDrawBlendModeの直後にDrawOvalと他の図形描画関数(例えばDrawBox)を連続実行した時に、両者の描画結果が異なります。 手元で以下のような SetDrawBlendMode の直後に DrawOval と DrawBox を実行するテストプログラムを 組んでみましたが、DrawOval と DrawOval の描画結果の色味は同じになりました #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ウィンドウモードで起動 ChangeWindowMode( TRUE ) ; SetBackgroundColor( 0,128,128 ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) { return -1 ; } // 描画を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; SetDrawBlendMode( DX_BLENDMODE_ALPHA, 128 ) ; DrawOval( 256, 70, 100, 60, GetColor( 255,255,255 ), TRUE ) ; DrawBox( 16, 16, 128, 128, GetColor( 255,255,255 ), TRUE ) ; DrawOval( 256, 70 + 200, 100, 60, GetColor( 255,255,255 ), FALSE ) ; DrawBox( 16, 16 + 200, 128, 128 + 200, GetColor( 255,255,255 ), FALSE ) ; ScreenFlip() ; WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } たけしおさんの環境でも上記プログラムであれば同じ色味になるかお試し頂けないでしょうか m(_ _)m
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.2 )
名前:たけしお 日時:2026/01/12 09:00

早速のご返信およびプログラムのご提供をありがとうございました。 実行した結果、やはり色味が異なる結果となりました。 スクリーンショットを撮り画像ソフトで実際の色を確認したところ、左上のboxの中央付近の色がr=128、g=192、b=192であったのに対し、右上のovalではr=192、g=224、b=224でした。 なお、ご参考までこちらは内蔵GPUのIntel Arc Graphicsです。
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.3 )
名前:管理人 日時:2026/01/12 23:41

お試し頂きありがとうございます テストプログラムでも現象が発生したとの旨了解しました 最新バージョンでは直っている可能性がありますので、よろしければこちらの 暫定の最新バージョンをお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.4 )
名前:たけしお 日時:2026/01/14 19:32

最新バージョンのご提供ありがとうございました。 ただ、リビルドした結果は「旧バージョンと変わらず」でした。 DrawOvalの直前で、パラメータを1/2にしてSetDrawBlendMode(今回はadd)を再度実行すれば同じ色味になる、という状況です。 以上、ご報告します。
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.5 )
名前:管理人 日時:2026/01/14 23:45

お試しいただきありがとうございます 最新バージョンでも駄目でしたか… すみません、お手数で申し訳ないのですが、プログラム実行時に作成される Log.txt の内容を丸ごと こちらの掲示板に貼り付けて頂けないでしょうか m(_ _;m あと、DxLib_Init() 呼び出しの前の行に SetUseDirect3DVersion( DX_DIRECT3D_9EX ); という記述を追加して、使用する Direct3D のバージョンを 9 にしても同様の結果となってしまうかを お試し頂けないでしょうか m(_ _;m
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.6 )
名前:たけしお 日時:2026/01/15 19:27

Direct3Dのバージョンを9にした場合、期待通りの描画結果(色味が同じ)になりました。 Log.txtの内容は以下のとおりです。 (この時、DXライブラリは先日ご提供いただいた最新バージョンで、SetUseDirect3DVersion( DX_DIRECT3D_9EX )は追加せずに実行した結果です。) 0:IDirect3D9Ex オブジェクトを取得します.... 成功 118:d3d9.dll の解放 1 295:ディスプレイ情報のセットアップ開始 298: モニターの数:2 ディスプレイデバイスの数:3 302: No.0 モニター名:\\.\DISPLAY1 2880x1800 32bit 60Hz 192x192dpi 303: No.1 モニター名:\\.\DISPLAY2 1920x1080 32bit 60Hz 192x192dpi 499:ディスプレイ情報のセットアップ完了 512:画面モード変更処理を開始します 512: ChangeWindowMode実行 512: ウインドウモードフラグが立てられました 514: DXライブラリの初期化処理開始 530: システムの情報を出力します 531: DXライブラリ Ver3.25 531: 論理プロセッサの数 : 8 533: OS Windows11 ( Build 26200 ) 634: 現時点のCPU動作速度:大体3.28GHz 634: MMX命令を使用します 634: SSE命令が使用可能です 634: SSE2命令が使用可能です 634: CPUベンダ:GenuineIntel 637: CPU名:Intel(R) Core(TM) Ultra 7 258V 638: COMの初期化... 成功 642: 非同期読み込み処理の初期化...成功 642: ファイルアクセス処理の初期化...成功 643: メモリ総量:32384.55MB 空きメモリ領域:14101.86MB 643: タイマーの精度を検査します 644: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 644: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 646: 646: ソフトの二重起動検査... 二重起動はされていませんでした 647: ウインドウクラスを登録します... 登録に成功しました 647: ウインドウモード起動用のウインドウを作成します 648: ウインドウ矩形 ( 988, -2194 )-( 4654, -83 ) 652: ウインドウの作成に成功しました 652: ウインドウを表示します 686: IMEを無効にしました 688: ウインドウスタイルをウインドウモード用に変更します... 完了 716: XInput DLL の読み込み中... 成功 732: ジョイパッドの初期化... 734: XInput 対応コントローラーのチェックを開始します 734: XInput 対応コントローラー No.0 をチェック 735: XInput 対応コントローラー No.0 の接続は確認できませんでした 735: XInput 対応コントローラー No.1 をチェック 736: XInput 対応コントローラー No.1 の接続は確認できませんでした 736: XInput 対応コントローラー No.2 をチェック 736: XInput 対応コントローラー No.2 の接続は確認できませんでした 736: XInput 対応コントローラー No.3 をチェック 737: XInput 対応コントローラー No.3 の接続は確認できませんでした 737: XInput 対応コントローラーのチェック完了 738: ジョイパッドの初期化は正常に終了しました 761: パッドの数は 0 個です 762: 入力関連の初期化をしました 764: WASAPI の初期化を行います 771: デバイス名 : Speaker (Realtek(R) Audio) 838: デフォルト遅延時間 : 10.000 ms 838: 最小遅延時間 : 3.000 ms 839: 遅延時間 : 10.000 ms 839: チャンネル数   : 2 ch 839: 量子化ビット深度 : 32 bit 839: 有効ビット深度  : 32 bit 841: サンプリングレート : 48000 Hz 841: データ形式 : 浮動小数点型 1253: 動作モード : 共有モード 1253: WASAPI の初期化は正常に終了しました 1258: d3d11.dll の読み込み.... 成功 1262: dxgi.dll の読み込み.... 成功 1262: API CreateDXGIFactory2 のアドレスを取得します.... 成功 1264: IDXGIFactory2 を作成します.... 成功 1270: API CreateDXGIFactory6 のアドレスを取得します.... 成功 1271: IDXGIAdapter を列挙 1271: Adapter No.0 Desc:Intel(R) Arc(TM) 140V GPU (16GB) VRAM:128MB 1272: Output Device No.0 Name:\\.\DISPLAY1 ( 0, 0 )-( 2880, 1800 ) 1272: Output Device No.1 Name:\\.\DISPLAY2 ( 914, -2160 )-( 4754, 0 ) 1272: Adapter No.1 Desc:Microsoft Basic Render Driver VRAM:0MB 1274: API D3D11CreateDevice のアドレスを取得します.... 成功 1274: IDXGIAdapter を取得します.... 成功 1274: IDXGIAdapter1 を取得します.... 成功 1275: IDXGIAdapter2 を取得します.... 成功 1275: IDXGIAdapter3 を取得します.... 成功 1275: IDXGIAdapter4 を取得します.... 成功 1276: Direct3D 11 FeatureLevel 11_0 以上を対象とします 1276: ID3D11Device オブジェクトを取得します.... 成功 1349: IDXGIDevice1 を取得します.... 成功 1349: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 1349: [ウインドウモード 1820x1020 ( -9987, -9942 )-( -6347, -7902 )] 1349: IDXGISwapChain2 を作成します.... 成功 1351: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 1351: IDXGIOutput を取得します.... 成功 1351: Graphics Device:Intel(R) Arc(TM) 140V GPU (16GB) 1351: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1353: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 1353: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 1353: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 1353: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1353: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1354: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 1354: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1354: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 1354: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1355: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 1355: DXT2テクスチャフォーマットは使えません 1356: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 1356: DXT4テクスチャフォーマットは使えません 1356: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 1356: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 1356: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 1356: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1356: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1357: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1357: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1357: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1358: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1358: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1358: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1358: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1358: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1359: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1359: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1359: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1359: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1359: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1359: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1359: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1360: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1360: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1360: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1360: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1360: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1360: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1360: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1361: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1361: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 1361: 同時にレンダリングできるバッファの数:8 1361: 最大テクスチャサイズ 幅:16384 高さ:16384 1361: 標準描画用の頂点バッファの作成.... 成功 1363: シェーダーコード関係の初期化.... 成功 1400: 各種シェーダー用定数バッファの作成.... 成功 1401: 各種 ID3D11InputLayout の作成.... 成功 1412: 画像の単純転送処理の初期化... 成功 1413: 深度バッファを作成します.... 成功 1425: フォントの初期化を行います 1426: フォントの初期化は正常に終了しました 1439: 文字コードバッファの初期化を行います... 完了しました 1441: DXライブラリの初期化処理終了 1450: フォントの初期化を行います 1452: フォントの初期化は正常に終了しました
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.7 )
名前:管理人 日時:2026/01/17 00:43

お試し頂き( &ログを貼って頂き )ありがとうございます 恐らくですが、お使いのPCに搭載されているGPU機能である Intel(R) Arc(TM) 140V 固有の問題ではないかと思います ( 少し前の Intel CPU に搭載されているGPU機能である Intel(R) Iris(R) Xe Graphics でも試してみましたが、色に問題はありませんでした ) Direct3D 11 でラインを描画する機能を使用した場合に問題が発生するようなので、恐らく同じ機能を使用している DrawCircle でも同様の現象が発生するのではないかと思います Intel Arc Graphics のドライバを最新のバージョンのものに更新すれば直るかもしれませんので、 よろしければこちらの最新バージョンをお試しになってみてください m(_ _)m https://www.intel.co.jp/content/www/jp/ja/download/785597/intel-arc-graphics-windows.html
メンテ
Re: DrawOvalとSetDrawBlendModeについて ( No.8 )
名前:たけしお 日時:2026/01/17 07:31

ご指摘のとおり、DrawCircleでも同様の現象が発生しました。 Intel Arc Graphics のドライバを最新バージョンに更新しても結果は変わらなかったことから、当面は、SetUseDirect3DVersion( DX_DIRECT3D_9EX )で対応したいと思います。 様々ご助言をいただき誠にありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存