こうすけ さん プロフィール

  •  
こうすけさん: C++ に挑戦!
ハンドル名こうすけ さん
ブログタイトルC++ に挑戦!
ブログURLhttp://fanblogs.jp/cplusplus/
サイト紹介文C++を学びながら、理解したことを記述します。 自分と、さらに誰かの役に立つことを願いながら。
参加カテゴリー
更新頻度(1年)情報提供416回 / 365日(平均8.0回/週) - 参加 2017/08/29 10:18

こうすけ さんのブログ記事

  • 《その437》シェーダ(点光源の場合)(4) 
  • シェーダ(点光源の場合)(4) ファイル(F) -> 新規作成(N) -> プロジェクト(P) Visual C++ -> Windowsユニバーサル -> DirectX11アプリ(ユニバーサルWindows)の順に操作して VS2017 を開始すると、3Dアニメーションのサンプルアプリが自動作成されます。 このサンプルアプリを改変することで、DirectX11アプリ(ユニバーサルWindows) について、ほんの僅かではありますが 学んできました.. [続きを読む]
  • 《その437》シェーダ(点光源の場合)(4)
  • シェーダ(点光源の場合)(4) ファイル(F) -> 新規作成(N) -> プロジェクト(P) Visual C++ -> Windowsユニバーサル -> DirectX11アプリ(ユニバーサルWindows)の順に操作して VS2017 を開始すると、3Dアニメーションのサンプルアプリが自動作成されます。 このサンプルアプリを改変することで、DirectX11アプリ(ユニバーサルWindows) について、ほんの僅かではありますが 学んできました.. [続きを読む]
  • 《その436》シェーダ(点光源の場合)(3)
  • シェーダ(点光源の場合)(3) 前回《435》は 下記 (a) の効果を、前々回《434》は 下記 (b) の効果を、それぞれ使って陰影処理をしました。今回は、(a),(b) 両方の効果を使った陰影処理です。  (a) 点光源からの光は、光源から離れるにつれて広い面積に拡散するので、明るさは減少します。  (b) ある面に光が当たるとき、光が面に垂直に当たるときが最も明るく、斜めに当たる場合は明るさが減少します。点光源の座標 (0.0 [続きを読む]
  • 《その435》シェーダ(点光源の場合)(2)
  • シェーダ(点光源の場合)(2) 前回《434》では、下記 (b) の効果について扱いました。  (a) 点光源からの光は、光源から離れるにつれて広い面積に拡散するので、明るさは減少します。  (b) ある面に光が当たるとき、光が面に垂直に当たるときが最も明るく、斜めに当たる場合は明るさが減少します。 (b) の効果のみで陰影処理を行うと、次のような不具合が生じます。 以下の3つの画像は、光源を少しずつ遠ざけていった [続きを読む]
  • 《その434》シェーダ(点光源の場合)(1)
  • シェーダ(点光源の場合)(1) 点光源とは、発光部の大きさが点とみなせるほど小さな光源のことです。今回のプログラムでは、光源を実際に点として考えます。  (1) 点光源からの光は、光源から離れるにつれて広い面積に拡散するので、明るさは減少します。  (2) ある面に光が当たるとき、光が面に垂直に当たるときが最も明るく、斜めに当たる場合は明るさが減少します。(1)の効果は、光源と面との距離を用いることで、比較 [続きを読む]
  • 《その433》シェーダ(2)
  •  シェーダ 本ブログ《431》の続きです。「VS2017 VC++ DirectX11アプリ(ユニバーサルWindows)」のサンプルアプリに陰影処理を加えるため、《431》では、   Sample3DSceneRenderer.cppに 頂点法線ベクトルのデータを加えました。 今回は、   ShaderStructures.h   SamplePixelShader.hlsl   SampleVertexShader.hlslの改変についてです(改変は ほんの一部だけです).. [続きを読む]
  • 《その432》面法線ベクトル,頂点法線ベクトル
  •  面法線ベクトル,頂点法線ベクトル 面に垂直な直線を法線と呼びます。法線方向のベクトルを法線ベクトルといいますが、面から遠ざかる向きが正の向きです。下図において、メッシュを構成する三角形の中の、例えば三角形576の法線ベクトル(面法線ベクトル)は薄紫色で表される右向き(x軸の正の向き)の矢印です。したがって、 三角形576の面法線ベクトルは(1.0f, 0.0f, 0.0f)です。※通常、法線ベクトルは、大きさ(長さ)が [続きを読む]
  • 《その431》シェーダ
  •  シェーダ ウィキペディアによると、「シェーダー(英: shader)とは、3次元コンピュータグラフィックスにおいて、シェーディング(陰影処理)を行うコンピュータプログラムのこと」だそうです。 本ブログの《427》~《429》では立方体を描画しましたが、今回は立方体に陰影処理をしてみたいと思います。次の画像は、陰影処理した立方体です。 回転角度が 0度のとき 回転角度が 30度のとき 回転角度が 45度のとき 回転角度が [続きを読む]
  • 《その430》座標軸の向き
  •  座標軸の向き ビュー行列   XMMATRIX XMMatrixLookAtRH(     XMVECTOR EyePosition,     XMVECTOR FocusPosition,     XMVECTOR UpDirection   )に、y軸の正の向きが上向きになるように設定してある(これが最も一般的な設定)ので、座標軸の向きは下記のようになっています。static const XMVECTORF32 eye = { 0.0f, -0.3f, 1.2f, 0... [続きを読む]
  • 《429》視点・注視点・上方の向き を変更する
  •  視点・注視点・上方の向き を変更する 前回《427》,前々回《428》に引き続き、Sample3DSceneRenderer.cpp についてです。CreateWindowSizeDependentResources関数内の eye, at, up の値を変更することで、図形の見え方が変わります。以下の画像は、すべて プログラム開始時点(ゼロ秒経過時点)での 立体の状態を表しています。// 手前1.5,高さ0.7 の位置から見ています。y軸の正の向きを上にしています。// .. [続きを読む]
  • 《その428》立方体の各面を異なる単色で塗りつぶす
  •  立方体の各面を異なる単色で塗りつぶす 前回《427》の結果から、同一面上にある2つの頂点の色が異なると その2点間の色がグラデーションで表現されることが、確認できました。 今回は、立方体の6つの面を 異なる6種類の単色で塗りつぶしてみます。 下図のように頂点に複数の番号を割り当てることで、それぞれの面を異なる単色で塗りつぶすことができます。◆頂点0,2,3,1 は青色です。 したがって、面0・2・3・1 は青色に [続きを読む]
  • 《その427》DirectX11アプリ(ユニバーサルWindows)
  •  DirectX11アプリ(ユニバーサルWindows) ファイル(F) -> 新規作成(N) -> プロジェクト(P) Visual C++ -> Windowsユニバーサル -> DirectX11アプリ(ユニバーサルWindows)の順に操作します。 VS2017 を、このようにして開始すると、3Dアニメーションのサンプルアプリが自動作成されます。 自分の場合、3Dアニメーション や DirectX11 の知識が完全にゼロです。基礎的なことから徐.. [続きを読む]
  • 《その426》Contentプロパティ
  •  Contentプロパティ Button要素や Label要素など、Contentプロパティを持つ要素の場合、その Contentプロパティに任意の型の子要素を設定することができます。   <Button>     <Button.Content>       <TextBlock Text="あいうえお"/>     </Button.Content>   </Button> この例の場合であれば、<Button.Content&.. [続きを読む]
  • 《その425》MapControl
  •  MapControl MapControl は地図を表示します。 MapControl自体は、   表示(V) -> ツールボックス(X)から ドラッグ&ドロップで簡単に設置できるのですが、これを使えるようにするにはマップ認証キーを入手する必要があります。 マップ認証キーの入手方法の解説は ここ マップ認証キーの入手先は ここ です。 MapControl には たくさんの機能がありますが、今回は、ツールボックスからドラッグ&ドロップした基本状態のまま [続きを読む]
  • 《その424》ProgressRingコントロール
  •  ProgressRingコントロール ProgressRing等のプログレスコントロールは、時間のかかる作業が進行中であることを示します。下記の例では、標準色の水色を赤色に変えて、サイズを少し大きくしてあります。 ProgressRingの動作を開始させるコードは、   progressRing->IsActive = true;動作終了は、   progressRing->IsActive = false;です。 コントロールの配置状況です。(左から Progre.. [続きを読む]
  • 《その423》FlipView を利用した画像表示
  •  FlipViewコントロールを利用した画像表示  今回のアプリの開始画面です。  見たい画像にチェックを入れます(最初の画像が表示されます)。  右矢印を して次の画像に移りました。  3枚目の画像です。  画像01 にもチェックを入れました。 アプリの動作は以上のような感じです。 FlipView は、次のような XAMLコードだけで、完全な動作をするものが生成されますから、手軽に利用することができます。   & [続きを読む]
  • 《その422》CalendarDatePicker コントロール
  •  CalendarDatePicker による日付入力 ユーザーに日付入力をしてもらう必要がある場合、CalendarDatePickerコントロールを利用できると便利です。CalendarDatePickerコントロールの配置は、ツールボックスからフォーム上にドラッグ&ドロップするだけなので容易です。  今回の主要テーマは、CalendarDatePickerコントロールで、ユーザーが選んだ日付を取得する方法です。下記の MainPage.xaml.cpp で、日付の.. [続きを読む]
  • 《その421》XAML(Grid の詳細設定)
  •  XAML(Grid の詳細設定) Grid の詳細設定"auto" の指定 コンテンツのサイズに合わせて列の幅を自動調整します。   <ColumnDefinition Width="auto"/> コンテンツのサイズに合わせて行の高さを自動調整します。   <RowDefinition Height="auto"/>"MaxWidth", "MaxHeight" の指定 幅・高さ の上限値を設定します(上限までは自動調整)。   <ColumnDefi.. [続きを読む]
  • 《その420》XAML(Grid)
  •  XAML(Grid) Gridコントロールは、格子状の枠内に子要素を配置することができます。  次の指定で、2行3列の Grid枠が生成され、それぞれの枠内にコントロールを配置することができます。  <Grid VerticalAlignment="Top" HorizontalAlignment="Left"    Width="600" Height="400" Margin="20,10">    <Grid.ColumnDefinitions>   .. [続きを読む]
  • 《その419》XAML(図形の描画)
  •  XAML(図形の描画) C++/CXコードで図形を描画する方法については、本ブログ《380》〜《382》で扱いましたが、今回は、XAML を用いた描画です。 以下は、MainPage.xaml のコードです。<Page x:Class="App14.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mic.. [続きを読む]
  • 《その417》XAML(Imageタグ)
  • XAML(Imageタグ) コードの文字数は多いですが、VS2017 は XAMLコードを自動生成してくれるので助かります。◆ ソリューションエクスプローラー -> App##(Universal Windows)  Assets を右 ◆ 追加(D) -> 既存の項目(G)◆ 取り込む画像ファイルを選択◆ 表示(V) -> ツールボックス(X)  Imageコントロールをフォーム上にドラッグ&ドロップ◆ 自動生成された Imageタグを編集します。   .. [続きを読む]
  • 《その416》XAML(TextBoxタグ)
  • XAML(TextBoxタグ) 本ブログの《364》〜《399》では、XAMLコードを 全て VS2017 に自動作成してもらいました。このまま XAML の知識ゼロで先に進むのは ちょっと不安なので、基礎の基礎くらいは知っておきたいと思います。XAML を使える人には、申しわけありません m(_ _)m 以下が、今回の手順です。◆ ファイル(F) -> 新規作成(N) -> プロジェクト(P)◆ Visual C++ -> Windowsユニバーサル -> .. [続きを読む]
  • 《その415》Platform::Array
  •  Platform::Array Windows Runtime が提供する Platform::Array は、1次元配列を扱う参照型クラスです。 C++/CX においても、Platform::Array よりずっと使いやすい std::array(あるいは、より強力な std::vector)を使うべきですが、ABI を介して配列の受け渡しをする場合にはPlatform::Array型を使う必要があります。※ABI : Application Binary Interfa.. [続きを読む]
  • 《その414》ガベージコレクション
  •  ガベージコレクション   std::wstring* p     = new std::wstring(L"あいうえお");で作成した文字列インスタンスを格納するメモリ領域は、明示的に   delete p;として解放しない限り、メモリを占有し続けます。   for (int i = 0; i < 5000; i++)     for (int j = 0; j < 5000; j++)       std::wstring* p = new std::wstr.. [続きを読む]