\r
//}\r
\r
- // \r
- \r
+ // バックバッファの作成\r
+ \r
D3D11_TEXTURE2D_DESC desc = {0};\r
desc.Width = actual_desc_.Width;\r
desc.Height = actual_desc_.Height;\r
// 定数バッファに格納\r
d3d_context_->UpdateSubresource( cb_change_on_resize_, 0, NULL, &ccor, 0, 0 );\r
\r
+ // 動的テクスチャの生成\r
+ {\r
+ D3D11_TEXTURE2D_DESC desc = {0};\r
+ desc.Width = 256;\r
+ desc.Height = 256;\r
+ desc.Format = actual_desc_.Format;\r
+ desc.MipLevels = 1;\r
+ desc.SampleDesc.Count = 1;\r
+ desc.SampleDesc.Quality = 0;\r
+ desc.ArraySize = 1;\r
+ desc.Usage = D3D11_USAGE_DEFAULT;\r
+ desc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;\r
+ // desc.MiscFlags = D3D11_RESOURCE_MISC_GDI_COMPATIBLE;\r
+ THROW_IF_ERR(d3d_device_->CreateTexture2D(&desc,NULL,&cube_texture_));\r
+ THROW_IF_ERR(d3d_device_->CreateRenderTargetView(cube_texture_,0,&cube_view_));\r
+\r
+ // 深度バッファの作成\r
+ D3D11_TEXTURE2D_DESC depth = {} ;\r
+ depth.Width = desc.Width;//rc.right - rc.left;client_width_;\r
+ depth.Height = desc.Height;//rc.bottom - rc.top;client_height_;\r
+ depth.MipLevels = 1;\r
+ depth.ArraySize = 1;\r
+ depth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;\r
+ depth.SampleDesc.Count = 1;\r
+ depth.SampleDesc.Quality = 0;\r
+ depth.Usage = D3D11_USAGE_DEFAULT;\r
+ depth.BindFlags = D3D11_BIND_DEPTH_STENCIL;\r
+ depth.CPUAccessFlags = 0;\r
+ depth.MiscFlags = 0;\r
+ THROW_IF_ERR(d3d_device_->CreateTexture2D( &depth, NULL, &cube_depth_texture_ ));\r
+\r
+ D3D11_DEPTH_STENCIL_VIEW_DESC dsv = {};\r
+ dsv.Format = depth.Format;\r
+ dsv.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;\r
+ dsv.Texture2D.MipSlice = 0;\r
+ THROW_IF_ERR(d3d_device_->CreateDepthStencilView( cube_depth_texture_, &dsv, &cube_depth_view_ ));\r
+ THROW_IF_ERR(d3d_device_->CreateShaderResourceView(cube_texture_,0,&cube_shader_res_view_));\r
+\r
+ D3D11_SAMPLER_DESC sdesc = {};\r
+ sdesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;\r
+ sdesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;\r
+ sdesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;\r
+ sdesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;\r
+ sdesc.ComparisonFunc = D3D11_COMPARISON_NEVER;\r
+ sdesc.MinLOD = 0;\r
+ sdesc.MaxLOD = D3D11_FLOAT32_MAX;\r
+ THROW_IFERR(d3d_device_->CreateSamplerState( &sdesc, &cube_sampler_state_ ));\r
+ cube_mat_projection_ = XMMatrixPerspectiveFovLH( XM_PIDIV4, /*(rc.right - rc.left)/(rc.bottom - rc.top)*/256 / 256, 0.01f, 100.0f );\r
+\r
+ }\r
+ // \r
+\r
init_ = true;// 初期化完了\r
}\r
\r
\r
// OMステージに登録する\r
// d3d_context_->OMSetRenderTargets( 1, &view_.GetInterfacePtr(), depth_view_ );\r
- d3d_context_->OMSetRenderTargets( 1, &view_.GetInterfacePtr(), depth_view_ );\r
+ // d3d_context_->OMSetRenderTargets( 1, &view_.GetInterfacePtr(), depth_view_ );\r
\r
// ビューポートの設定\r
D3D11_VIEWPORT vp;\r
safe_release(input_layout_);\r
safe_release(v_shader_);\r
discard_swapchain_dependent_resources();\r
+ safe_release(back_buffer_);\r
+ safe_release(cube_sampler_state_);\r
+ safe_release(cube_shader_res_view_);\r
+ safe_release(cube_view_);\r
+ safe_release(cube_depth_view_);\r
+ safe_release(cube_texture_);\r
+ safe_release(cube_depth_texture_);\r
//safe_release(render_target_);\r
// safe_release(swap_chain_);\r
safe_release(d3d_context_);\r
safe_release(d3d_device_);\r
safe_release(adapter_);\r
+\r
}\r
\r
template <typename ProcType> \r
if(init_)\r
{\r
\r
- float color[4] = { 0.0f, 0.0f, 1.0f, 1.0f }; \r
-\r
+ float cube_color[4] = { 0.0f, 0.0f, 1.0f, 0.5f }; \r
\r
// 描画ターゲットのクリア\r
- d3d_context_->ClearRenderTargetView(view_,color);\r
+ d3d_context_->ClearRenderTargetView(cube_view_,cube_color);\r
// 深度バッファのクリア\r
- d3d_context_->ClearDepthStencilView( depth_view_, D3D11_CLEAR_DEPTH, 1.0f, 0 );\r
+ d3d_context_->ClearDepthStencilView( cube_depth_view_, D3D11_CLEAR_DEPTH, 1.0f, 0 );\r
+\r
\r
DWORD time_count = GetTickCount();\r
if( time_start == 0 )\r
cb.vLightColor = mesh_color_;\r
d3d_context_->UpdateSubresource( cb_changes_every_frame_, 0, NULL, &cb, 0, 0 );\r
\r
+ cb_change_on_resize ccor;\r
+ ccor.mProjection = XMMatrixTranspose( cube_mat_projection_ );\r
+ // 定数バッファに格納\r
+ d3d_context_->UpdateSubresource( cb_change_on_resize_, 0, NULL, &ccor, 0, 0 );\r
+\r
+\r
// 立方体の描画\r
d3d_context_->VSSetShader( v_shader_, NULL, 0 );\r
d3d_context_->VSSetConstantBuffers( 0, 1, &cb_never_changes_.GetInterfacePtr() );\r
d3d_context_->PSSetShaderResources( 0, 1, &shader_res_view_.GetInterfacePtr() );\r
d3d_context_->PSSetSamplers( 0, 1, &sampler_state_.GetInterfacePtr() );\r
\r
+ d3d_context_->OMSetRenderTargets( 1, &cube_view_.GetInterfacePtr(), cube_depth_view_ );\r
+\r
+ // ビューポートの設定\r
+ D3D11_VIEWPORT vp;\r
+ vp.Width = 256;//client_width_;\r
+ vp.Height = 256;//client_height_;\r
+ vp.MinDepth = 0.0f;\r
+ vp.MaxDepth = 1.0f;\r
+ vp.TopLeftX = 0;\r
+ vp.TopLeftY = 0;\r
+ d3d_context_->RSSetViewports( 1, &vp );\r
+\r
+ d3d_context_->DrawIndexed( 36, 0, 0 );\r
+\r
+ d3d_context_->OMSetRenderTargets( 1, &view_.GetInterfacePtr(), depth_view_ );\r
+\r
+ float color[4] = { 1.0f, 0.0f, 0.0f, 0.0f }; \r
+ // 描画ターゲットのクリア\r
+ d3d_context_->ClearRenderTargetView(view_,color);\r
+ // 深度バッファのクリア\r
+ d3d_context_->ClearDepthStencilView( depth_view_, D3D11_CLEAR_DEPTH, 1.0f, 0 );\r
+\r
+ d3d_context_->PSSetShaderResources( 0, 1, &cube_shader_res_view_.GetInterfacePtr() );\r
+ d3d_context_->PSSetSamplers( 0, 1, &cube_sampler_state_.GetInterfacePtr() );\r
+\r
+\r
+ // ビューポートの設定\r
+ vp.Width = width_;//client_width_;\r
+ vp.Height = height_;//client_height_;\r
+ vp.MinDepth = 0.0f;\r
+ vp.MaxDepth = 1.0f;\r
+ vp.TopLeftX = 0;\r
+ vp.TopLeftY = 0;\r
+\r
+ d3d_context_->RSSetViewports( 1, &vp );\r
+\r
+ //cb_change_on_resize ccor;\r
+ ccor.mProjection = XMMatrixTranspose( mat_projection_ );\r
+ // 定数バッファに格納\r
+ d3d_context_->UpdateSubresource( cb_change_on_resize_, 0, NULL, &ccor, 0, 0 );\r
+\r
+\r
d3d_context_->DrawIndexed( 36, 0, 0 );\r
\r
// 表示\r
BLENDFUNCTION blend;\r
blend.BlendOp = AC_SRC_OVER;\r
blend.BlendFlags = 0;\r
- blend.SourceConstantAlpha = 200; // 不透明度(レイヤードウィンドウ全体のアルファ値)\r
- blend.AlphaFormat = AC_SRC_ALPHA;\r
+ blend.SourceConstantAlpha = 128; // 不透明度(レイヤードウィンドウ全体のアルファ値)\r
+ blend.AlphaFormat = 0;//AC_SRC_ALPHA;\r
// デバイスコンテキストにおけるレイヤの位置\r
POINT po;\r
po.x = po.y = 0;\r
BOOL err;\r
- err = UpdateLayeredWindow(hwnd_, ddc.get(), &wnd_pos, &wnd_size, sdc, &po, RGB(255,0,0), &blend, ULW_ALPHA | ULW_COLORKEY);\r
+ err = UpdateLayeredWindow(hwnd_, ddc.get(), &wnd_pos, &wnd_size, sdc, &po, RGB(255,0,0), &blend, ULW_ALPHA | ULW_COLORKEY );\r
BOOST_ASSERT(err == TRUE);\r
surface->ReleaseDC( NULL);\r
surface.Release();\r