struct simple_vertex
{
XMFLOAT3 pos;
+ XMFLOAT3 norm;
XMFLOAT2 tex;
};
struct cb_never_changes
{
XMMATRIX mView;
+ XMFLOAT4 vLightDir;
+ XMFLOAT4 vLightColor;
};
struct cb_change_on_resize
struct cb_changes_every_frame
{
XMMATRIX mWorld;
- XMFLOAT4 vMeshColor;
+// XMFLOAT4 vMeshColor;
};
struct toplevel_window::impl : public base_win32_window
THROW_IFERR(adapter_->EnumOutputs(0,&output_));
+ // MSAA
+ DXGI_SAMPLE_DESC msaa;
+ for(int i = 0; i <= D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT; i++){
+ UINT q;
+ if SUCCEEDED(d3d_device_->CheckMultisampleQualityLevels(DXGI_FORMAT_D24_UNORM_S8_UINT, i, &q)){
+ if(1 < q){
+ msaa.Count = i;
+ msaa.Quality = q - 1;
+ break;
+ }
+ }
+ }
+
// 表示モード
DXGI_MODE_DESC desired_desc = {} , actual_desc = {};
// 各色8ビットで符号化なし正規化数
- desired_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+ desired_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
desired_desc.Height = client_height_;// 高さ
desired_desc.Width = client_width_;// 幅
desired_desc.Scaling = DXGI_MODE_SCALING_CENTERED;// スケーリングなし
desc.SampleDesc.Count = 1;
desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
desc.BufferCount = 1;
+// desc.SampleDesc = msaa;
desc.OutputWindow = hwnd_;
// desc.SwapEffect = DXGI_SWAP_EFFECT_;
desc.Windowed = TRUE;
#if defined( DEBUG ) || defined( _DEBUG )
compile_flag |= D3DCOMPILE_DEBUG;
#endif
- HRESULT hr = D3DX11CompileFromFile( L"Tutorial07.fx", NULL, NULL, "VS", "vs_4_0",
+ HRESULT hr = D3DX11CompileFromFile( L"dxgi_test.fx", NULL, NULL, "VS", "vs_5_0",
compile_flag, 0, NULL, &vsblob, &vserrblob, NULL );
if( FAILED( hr ) )
{
// 入力頂点レイアウトの定義
D3D11_INPUT_ELEMENT_DESC
layout[] = {
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }};
+ { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
+ { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
+ { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }};
+ ;
// 入力頂点レイアウトの生成
- THROW_IFERR(d3d_device_->CreateInputLayout( layout, 2, vsblob->GetBufferPointer(),
+ THROW_IFERR(d3d_device_->CreateInputLayout( layout, ARRAYSIZE(layout), vsblob->GetBufferPointer(),
vsblob->GetBufferSize(), &input_layout_ ));
vsblob.Release();
}
#if defined( DEBUG ) || defined( _DEBUG )
compile_flag |= D3DCOMPILE_DEBUG;
#endif
- HRESULT hr = D3DX11CompileFromFile( L"Tutorial07.fx", NULL, NULL, "PS", "ps_4_0",
+ HRESULT hr = D3DX11CompileFromFile( L"dxgi_test.fx", NULL, NULL, "PS", "ps_5_0",
compile_flag, 0, NULL, &psblob, &pserror, NULL );
if( FAILED( hr ) )
{
// Create vertex buffer
simple_vertex vertices[] =
{
- { XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, 1.0f, -1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, 1.0f, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
- { XMFLOAT3( -1.0f, 1.0f, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
-
- { XMFLOAT3( -1.0f, -1.0f, -1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, -1.0f, -1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, -1.0f, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
- { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
-
- { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
- { XMFLOAT3( -1.0f, -1.0f, -1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
- { XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
- { XMFLOAT3( -1.0f, 1.0f, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
-
- { XMFLOAT3( 1.0f, -1.0f, 1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, -1.0f, -1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, 1.0f, -1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
- { XMFLOAT3( 1.0f, 1.0f, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
-
- { XMFLOAT3( -1.0f, -1.0f, -1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, -1.0f, -1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, 1.0f, -1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
- { XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
-
- { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, -1.0f, 1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
- { XMFLOAT3( 1.0f, 1.0f, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
- { XMFLOAT3( -1.0f, 1.0f, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
+ { XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT3( 0.0f, 1.0f, 0.0f ),XMFLOAT2( 0.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, 1.0f, -1.0f ),XMFLOAT3( 0.0f, 1.0f, 0.0f ), XMFLOAT2( 1.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, 1.0f, 1.0f ),XMFLOAT3( 0.0f, 1.0f, 0.0f ), XMFLOAT2( 1.0f, 1.0f ) },
+ { XMFLOAT3( -1.0f, 1.0f, 1.0f ), XMFLOAT3( 0.0f, 1.0f, 0.0f ) ,XMFLOAT2( 0.0f, 1.0f ) },
+
+ { XMFLOAT3( -1.0f, -1.0f, -1.0f ),XMFLOAT3( 0.0f, -1.0f, 0.0f ), XMFLOAT2( 0.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, -1.0f, -1.0f ), XMFLOAT3( 0.0f, -1.0f, 0.0f ) ,XMFLOAT2( 1.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, -1.0f, 1.0f ), XMFLOAT3( 0.0f, -1.0f, 0.0f ) , XMFLOAT2( 1.0f, 1.0f ) },
+ { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT3( 0.0f, -1.0f, 0.0f ),XMFLOAT2( 0.0f, 1.0f ) },
+
+ { XMFLOAT3( -1.0f, -1.0f, 1.0f ),XMFLOAT3( -1.0f, 0.0f, 0.0f ) , XMFLOAT2( 0.0f, 0.0f ) },
+ { XMFLOAT3( -1.0f, -1.0f, -1.0f ),XMFLOAT3( -1.0f, 0.0f, 0.0f ), XMFLOAT2( 1.0f, 0.0f ) },
+ { XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT3( -1.0f, 0.0f, 0.0f ),XMFLOAT2( 1.0f, 1.0f ) },
+ { XMFLOAT3( -1.0f, 1.0f, 1.0f ),XMFLOAT3( -1.0f, 0.0f, 0.0f ), XMFLOAT2( 0.0f, 1.0f ) },
+
+ { XMFLOAT3( 1.0f, -1.0f, 1.0f ),XMFLOAT3( 1.0f, 0.0f, 0.0f ), XMFLOAT2( 0.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, -1.0f, -1.0f ),XMFLOAT3( 1.0f, 0.0f, 0.0f ), XMFLOAT2( 1.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, 1.0f, -1.0f ),XMFLOAT3( 1.0f, 0.0f, 0.0f ), XMFLOAT2( 1.0f, 1.0f ) },
+ { XMFLOAT3( 1.0f, 1.0f, 1.0f ),XMFLOAT3( 1.0f, 0.0f, 0.0f ), XMFLOAT2( 0.0f, 1.0f ) },
+
+ { XMFLOAT3( -1.0f, -1.0f, -1.0f ),XMFLOAT3( 0.0f, 0.0f, -1.0f ) , XMFLOAT2( 0.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, -1.0f, -1.0f ),XMFLOAT3( 0.0f, 0.0f, -1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, 1.0f, -1.0f ),XMFLOAT3( 0.0f, 0.0f, -1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
+ { XMFLOAT3( -1.0f, 1.0f, -1.0f ),XMFLOAT3( 0.0f, 0.0f, -1.0f ) , XMFLOAT2( 0.0f, 1.0f ) },
+
+ { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT3( 0.0f, 0.0f, 1.0f ) , XMFLOAT2( 0.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, -1.0f, 1.0f ), XMFLOAT3( 0.0f, 0.0f, 1.0f ) , XMFLOAT2( 1.0f, 0.0f ) },
+ { XMFLOAT3( 1.0f, 1.0f, 1.0f ),XMFLOAT3( 0.0f, 0.0f, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
+ { XMFLOAT3( -1.0f, 1.0f, 1.0f ), XMFLOAT3( 0.0f, 0.0f, 1.0f ),XMFLOAT2( 0.0f, 1.0f ) }
};
//std::vector<simple_vertex> vertices = boost::assign::list_of<simple_vertex>
//
mat_view_ = XMMatrixLookAtLH( eye, at, up );
cb_never_changes cnc;
cnc.mView = XMMatrixTranspose( mat_view_ );
+ cnc.vLightColor = XMFLOAT4( 0.5f, 0.5f, 0.5f, 1.0f );
+ cnc.vLightDir = XMFLOAT4(-0.577f, 0.577f, -0.577f, 1.0f);
// 定数バッファに格納
d3d_context_->UpdateSubresource( cb_never_changes_, 0, NULL, &cnc, 0, 0 );
void render(){
static float t = 0.0f;
+
static DWORD time_start = 0;
if(init_)
// 定数更新
cb_changes_every_frame cb;
cb.mWorld = XMMatrixTranspose( mat_world_ );
- cb.vMeshColor = mesh_color_;
+// cb.vMeshColor = mesh_color_;
d3d_context_->UpdateSubresource( cb_changes_every_frame_, 0, NULL, &cb, 0, 0 );
// 立方体の描画
d3d_context_->PSSetConstantBuffers( 2, 1, &cb_changes_every_frame_.GetInterfacePtr() );
d3d_context_->PSSetShaderResources( 0, 1, &shader_res_view_.GetInterfacePtr() );
d3d_context_->PSSetSamplers( 0, 1, &sampler_state_.GetInterfacePtr() );
+
d3d_context_->DrawIndexed( 36, 0, 0 );
+
}
// if (render_target_)