下のプログラムでScreenFlipが呼び出された時にアクセス違反が発生しプログラムが停止します。
インデックスの[3][4][5]がこの組み合わせの場合のみ発生するようですが、配列に指定するインデックスには順番規則のようなものがあるのでしょうか?
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(1);
VERTEX3D Vertex[ 4 ] ;
WORD Index[ 6 ] ;
SetDrawScreen(DX_SCREEN_BACK);
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
SetCameraPositionAndTarget_UpVecY( VGet(50.f,50.f,50.f), VGet( 0.0f, 0.0f, 0.0f ) ) ;
// 4頂点分のデータをセット
Vertex[ 0 ].pos = VGet( -10.0f, 0.0f, -10.0f ) ;
Vertex[ 0 ].norm = VGet( 0.0f, 1.0f, 0.0f ) ;
Vertex[ 0 ].dif = GetColorU8( 255,255,255,255 ) ;
Vertex[ 1 ].pos = VGet( 10.0f, 0.0f, -10.0f ) ;
Vertex[ 1 ].norm = VGet( 0.0f, 1.0f, 0.0f ) ;
Vertex[ 1 ].dif = GetColorU8( 255, 0,255,255 ) ;
Vertex[ 2 ].pos = VGet( -10.0f, 0.0f, 10.0f ) ;
Vertex[ 2 ].norm = VGet( 0.0f, 1.0f, 0.0f ) ;
Vertex[ 2 ].dif = GetColorU8( 0,255,255,255 ) ;
Vertex[ 3 ].pos = VGet( 10.0f, 0.0f, 10.0f ) ;
Vertex[ 3 ].norm = VGet( 0.0f, 1.0f, 0.0f ) ;
Vertex[ 3 ].dif = GetColorU8( 0,255,255,255 ) ;
// 2ポリゴン分のインデックスデータをセット
Index[ 0 ] = 0 ;
Index[ 1 ] = 1 ;
Index[ 2 ] = 3 ;
//ok: (2,0,3) (0,2,3) (2,3,0) (3,2,0) (3,0,2)
Index[ 3 ] = 0 ;
Index[ 4 ] = 3 ;
Index[ 5 ] = 2 ;
// 2ポリゴンの描画
DrawPolygonIndexed3D( Vertex, 4, Index, 2, DX_NONE_GRAPH, FALSE ) ;
ScreenFlip();
// キー入力待ちをする
WaitKey() ;
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}