不具合のご報告ありがとうございます m(_ _)m
全部は修正できませんでしたが、一部のバグは修正することができましたので、よろしければ
こちらをお試しになってみてください 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)」をして下さい)
> ・描画モードをDX_BLENDMODE_MULにしてAA付きの描画をすると、AAが効かなくなり、一回り(2ピクセルほど)大きく描画される
正常に乗算されるように修正しました
> ・描画モードをDX_BLENDMODE_ADDにしてAA付きの描画をすると、その後の通常(AAのない)描画に指定した色に、AA描画の色が乗算される
こちらは再現することができませんでした
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE ) ;
if( DxLib_Init() < 0 ) return -1 ;
SetDrawScreen( DX_SCREEN_BACK ) ;
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
// DX_BLENDMODE_ADD でアンチエイリアス付きの円を描画
SetDrawBlendMode( DX_BLENDMODE_ADD, 255 ) ;
DrawCircleAA( 320.0f - 80.0f, 240.0f, 128.0f, 64, GetColor( 0,128,128 ), TRUE, 1.0f ) ;
// DX_BLENDMODE_ALPHA でアンチエイリアスなしの円を描画
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ) ;
DrawCircle( 320 + 80, 240, 128, GetColor( 255,255,0 ), TRUE ) ;
ScreenFlip() ;
}
DxLib_End() ;
return 0 ;
}
↑このようなプログラムで AA付きの描画を行った後AAの無い描画を行ってみたのですが、
DrawCircle の描画結果に DrawCircleAA の実行が影響を与えることはありませんでした
( 普通に GetColor( 255,255,0 ) の色で円が描画されました )
よろしければ教えてくんさんの環境でも上記のプログラムであれば正常に動作するか試してみていただけないでしょうか m(_ _)m
> ・描画モードをDX_BLENDMODE_INVSRCにしてにしてAA付きの描画をすると、真っ黒で描画され、その後の通常(AAでない)描画の色に、AA付き描画の色が影響を与える
「描画モードをDX_BLENDMODE_INVSRCにしてにしてAA付きの描画をすると、真っ黒で描画される」点については
修正できましたが、DX_BLENDMODE_ADD の件と同じく「その後の通常(AAでない)描画の色に、AA付き描画の色が影響を与える」に
ついては再現することができませんでした
DX_BLENDMODE_ADD とほぼ同じですが、以下のようなテストプログラムで再現を試みてみました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE ) ;
if( DxLib_Init() < 0 ) return -1 ;
SetDrawScreen( DX_SCREEN_BACK ) ;
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
// DX_BLENDMODE_INVSRC でアンチエイリアス付きの円を描画
SetDrawBlendMode( DX_BLENDMODE_INVSRC, 255 ) ;
DrawCircleAA( 320.0f - 80.0f, 240.0f, 128.0f, 64, GetColor( 0,128,128 ), TRUE, 1.0f ) ;
// DX_BLENDMODE_ALPHA でアンチエイリアスなしの円を描画
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ) ;
DrawCircle( 320 + 80, 240, 128, GetColor( 255,255,0 ), TRUE ) ;
ScreenFlip() ;
}
DxLib_End() ;
return 0 ;
}
上記の再現用プログラムに問題がありましたらご指摘いただけないでしょうか? m(_ _;m