トップページ > 記事閲覧
DrawCircleについて
名前:ほげ++ 日時: 2015/06/12 19:23

DrawCircleで縁の色がちがう円を表示するのに 以下のようなコードを書いたのですが、 int r = 12; DrawCircle( 320, 240, r, GetColor( 255, 255, 255 ) ); DrawCircle( 320, 240, r, GetColor( 255, 0, 0 ), FALSE, 1 ); このコードだと円がうまく重なって表示されません。 どうすれば縁の色だけ変えたようにできるでしょうか? また、円の縁の大きさなのですが、2以上にするとログに以下のように出力されます。 5158:Alloc memory dump 5159: size: 480( 0.469kb) file:\DxGraphics.cpp line:24975 ID:34 addr:07273710 data:<................> [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00] 5160: Total size:480(0.469kb) Alloc num:1 5161: DxLibのバージョンは3.14a CPUはIntel(R) Core(TM) i7-4650U グラフィックデバイスはIntel(R) HD Graphics 5000 です。
メンテ

Page: 1 |

Re: DrawCircleについて ( No.1 )
名前:管理人 日時:2015/06/13 13:57

円が重ならない現象は私のメインPCに搭載されている GeForce GTX 660 Ti では発生しませんでしたが、 Intel(R) HD Graphics 4400 が搭載されている Surface Pro 3 で現象を確認できました Intel(R) HD Graphics 4400 でも正しい位置に円が描画されるように調整してみましたので、 よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) Alloc memory dump の件は円を描画する際に確保しているメモリの解放忘れで、バグです こちらも修正しました、ご指摘ありがとうございます m(・・;m
メンテ
Re: DrawCircleについて ( No.2 )
名前:ほげ++ 日時:2015/06/13 16:20

ハードウェア依存のバグだったんですね まさしく自分の環境がSurfacePro3で、 自分の環境でも思った通りの結果になりました! 素早い対応ありがとうございました! たびたび申し訳ないのですが、もともとDxLibのver3.12eを使っていたプロジェクトで GetUseDirect3D9BackBufferSurface() を使っていたのですが、 最新のバージョンでは D_IDirect3DSurface9 が定義されていないというエラーがでるようになりました。 急ぎの用ではないので、また時間があればご確認よろしくお願いします。
メンテ
Re: DrawCircleについて ( No.3 )
名前:管理人 日時:2015/06/13 16:29

おお、ほげ++さんの環境も SurfacePro 3 でしたか 描画結果が直った様で何よりです (^ ^ Win32 環境以外に対応するため GetUseDirect3DBackBufferSurface の戻り値は void * になりましたので、 取得側のプログラムで IDirect3DSurface9 * 等にキャストしてください あと、現在のバージョンは Direct3D 11 が使用できる環境では Direct3D 11 を使用するので、 Direct3D 11 を使用する場合は Direct3D 9 のサーフェスが取得できないようになっています なので、GetUseDirect3DBackBufferSurface を使用する場合は Direct3D 11 が使用できる環境でも 強制的に Direct3D 9 を使用するために DxLib_Init の呼び出しの前に SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; という記述を追加してください
メンテ
Re: DrawCircleについて ( No.4 )
名前:ほげ++ 日時:2015/06/13 17:32

D_IDirect3DSurface9がなくなって、IDirect3DSurface9にキャストするようになっていたんですね! 無事に先の修正版でも動作することができました! 迅速に対応してくださって本当にありがとうございました!
メンテ

Page: 1 |

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

   クッキー保存