トップページ > 過去ログ > 記事閲覧
DrawTriangleとバックカリング!?
名前:埴輪 日時: 2011/03/01 09:32

DrawTriangleで三角形を描画する際、 座標を書く順番によっては描画されない 場合があります。 ひょっとしたら、3D用のバックカリング の設定の影響を受けている気がするので 確認お願いします。

Page: 1 |

Re: DrawTriangleとバックカリング!? ( No.1 )
名前:いっち 日時:2011/03/02 20:50

事象確認しました。 Ver.3.01以降のDXライブラリで発生するようです。 (3.00fの更新履歴に "DrawTriangle 関数を高速化。" とあるのでその影響かもしれません) //- 以下、テストコード -// int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ); if( DxLib_Init( ) == -1 ) return -1; int Cr = GetColor( 255 , 255 , 0 ); int x1 = 16, y1 = 0, x2 = 0, y2 = 32, x3 = 32, y3 = 32; int gap = 40; SetUseBackCulling( TRUE ); // FALSE の場合はすべて描画される DrawTriangle( x1, y1 + (gap * 0), x2, y2 + (gap * 0), x3, y3 + (gap * 0), Cr, TRUE ); // FillFlag が FALSE の場合はすべて描画される DrawTriangle( x1, y1 + (gap * 1), x3, y3 + (gap * 1), x2, y2 + (gap * 1), Cr, TRUE ); DrawTriangle( x2, y2 + (gap * 2), x1, y1 + (gap * 2), x3, y3 + (gap * 2), Cr, TRUE ); DrawTriangle( x2, y2 + (gap * 3), x3, y3 + (gap * 3), x1, y1 + (gap * 3), Cr, TRUE ); DrawTriangle( x3, y3 + (gap * 4), x1, y1 + (gap * 4), x2, y2 + (gap * 4), Cr, TRUE ); DrawTriangle( x3, y3 + (gap * 5), x2, y2 + (gap * 5), x1, y1 + (gap * 5), Cr, TRUE ); WaitKey( ); DxLib_End( ); return 0; }
Re: DrawTriangleとバックカリング!? ( No.2 )
名前:管理人 日時:2011/03/05 01:52

ご報告ありがとうございます 私の環境でも現象を確認することができました カリングされないように修正したバージョンをアップしましたので、よろしければ お試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) >いっちさん >(3.00fの更新履歴に "DrawTriangle 関数を高速化。" とあるのでその影響かもしれません) テストログラムを貼り付けていただきありがとうございます 原因はご推察の通りです m(_ _;m

Page: 1 |