#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE);
SetAlwaysRunFlag(TRUE);
SetGraphMode( 512, 512 , 32 ) ;
SetWindowSize( 512, 512 ) ;
int TextureHandle ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// テクスチャの読み込み
TextureHandle = LoadGraph( "Src1.bmp" ) ;
bool is_Ortho = false;
bool is_Light = true;
int time=0;
// ESCキーが押されるかウインドウが閉じられるまでループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
ClearDrawScreen() ;
//入力によって機能切り替え
if( CheckHitKey( KEY_INPUT_O ) == 1 ){
is_Ortho = true;
}
if( CheckHitKey( KEY_INPUT_P ) == 1 ){
is_Ortho = false;
}
if( CheckHitKey( KEY_INPUT_L ) == 1 ){
is_Light = true;
}
if( CheckHitKey( KEY_INPUT_K ) == 1 ){
is_Light = false;
}
// カメラ
if(is_Ortho){
SetupCamera_Ortho( 2000.0f ) ;
}else{
SetupCamera_Perspective( 60.f * DX_PI_F / 180.0f ) ;
}
SetCameraPositionAndAngle( VGet( 0.0f, 0.f, -8.0f), 0.f, 0.f, 0.f ) ;
// ライティング関係
SetUseLighting(is_Light);//※1これをFALSEにしても加算色が実現できた
ChangeLightTypeDir( VGet( 0.f, 0.f, 1.f ) ) ;//※2これを全て0にしても加算色が実現できた
VERTEX3D v[6]; //三角形2つ分
//VERTEX3D v[6];を作る
{
VERTEX3D q[4]; //4隅の頂点
int texw = 256;
int texh = 256;
float x_=0.f, y_=0.f, z_=500.f;
float size=256;
//四点共通要素の初期化
for(int i=0; i<4; i++){
q[i].dif=GetColorU8(255,255,255,255);
q[i].norm.x=0.f;q[i].norm.y=0.f;q[i].norm.z=-1.f;//法線はこちら向き //※3ここを全て0にしても加算色が実現できた
q[i].spc=GetColorU8(0,255,255,0);//加算したい色に青緑を指定
}
//[0][2]
//[1][3] の順で四角形を形成
{
int i=0;
q[i].pos.x = x_ - size*0.5f; q[i].pos.y = y_ + size*0.5f; q[i].pos.z = z_ + 0.f;
q[i].u = 0.f; q[i].v = 0.f;
i++;
q[i].pos.x = x_ - size*0.5f; q[i].pos.y = y_ - size*0.5f; q[i].pos.z = z_ + 0.f;
q[i].u = 0.f; q[i].v = 1.f;
i++;
q[i].pos.x = x_ + size*0.5f; q[i].pos.y = y_ + size*0.5f; q[i].pos.z = z_ + 0.f;
q[i].u = 1.f; q[i].v = 0.f;
i++;
q[i].pos.x = x_ + size*0.5f; q[i].pos.y = y_ - size*0.5f; q[i].pos.z = z_ + 0.f;
q[i].u = 1.f; q[i].v = 1.f;
i++;
}
//四隅の頂点から三角形を2つつくる
{
//1つ目の三角形
v[0] = q[0];
v[1] = q[1];
v[2] = q[2];
//2つ目の三角形
v[3] = q[1];
v[4] = q[3];
v[5] = q[2];
}
}
//プリミティブ描画
DrawPrimitive3D(v, 6, DX_PRIMTYPE_TRIANGLELIST, TextureHandle, TRUE);
DrawFormatString(0,0,0xffffffff,"%s %d",is_Ortho?"SetupCamera_Ortho":"SetupCamera_Perspective", time);
time++;
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}