スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

頂点データの合成

複数の頂点データを使いたいときの覚え書き


ModelMeshPart model = baseModel.Meshes[0].MeshParts[0];
model.VertexBuffer.SetData(vertexData);//頂点バッファにデータをセット
model.Effect.CurrentTechnique = baseModel.Meshes[0].Effects[0].Techniques["hoge"];

//二つの頂点情報を同時に利用するためSetVertexBuffersを行う。
GraphicsDevice.SetVertexBuffers(model.VertexBuffer, AddBuffer);
GraphicsDevice.Indices = model.IndexBuffer;//インデックスもセットしなおさないとダメ

//baseModel.Meshes[0].Draw()は使えなくなるので自前で描写
model.Effect.CurrentTechnique.Passes[0].Apply();
GraphicsDevice.DrawIndexedPrimitives(
PrimitiveType.TriangleList,
model.VertexOffset,
0,
model.NumVertices,
model.StartIndex,
model.PrimitiveCount
);
スポンサーサイト

深度バッファ

特殊な深度バッファ作成中に嵌った時のメモ

視錐台上の頂点をPositionを表すfloat4のw値で割ることにより立方体の領域に収めてくれる
これは誰もが利用する座標変換なわけだけれども!この範囲がうやむやになっていたため嵌ったのである

-1≦x≦1
-1≦y≦1
0≦z≦1


そんだけです。
ねよっと。

イベント書くとき便利なラムダ式

C#ネタ。

イベント追加するときすっごい1行で終わる命令なのに
・関数を用意(引数の型覚えてないのでいちいち調べる)
・イベントを登録(WPFとかだといちいちデザイナを見に行ったり・・・)

こんな面倒な作業とおさらばできるのがラムダ式

public Form1()
{
……省略……
button1.Click += button1_Click;
}

void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("1行なのに・・");
}


これが

public Form1()
{
button1.Click += (s,e) => MessageBox.Show("1行なのに・・");
}


とかけてしまう
これは便利。
複数行の場合は最右辺を

{A;B;C;};

と区切ってやればよい。
型は自動的に認識してくれるので、候補もばっちり出てくれるし至れり尽くせりじゃの。




ねよっと。

コードスニペットを使ってみよう

C#にて何度も似たような入力を楽にしてくれる機能がある。
コードスニペットというものだ。Tabで出している例のアレを自作できるようなのだ。

作り方は簡単。
メモ帳に

<?xml version="1.0" encoding="UTF-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>登録名</Title>
<Author>登録者名</Author>
<Description>スニペットの説明</Description>
<Shortcut>何て入れたらこのスニペットが発動するかを入れる</Shortcut>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>変数名(繰り返し出てくる文字があった場合に便利)</ID>
<ToolTip>変数の説明</ToolTip>
<Default>デフォルト値(Tabで移動して変数の名前を変えると全部一気に変わってくれるぞ)</Default>
</Literal>
</Declarations>
<Code Language="CSharp">
<![CDATA[
#ここに具体的にコードを書き込む。変数名には前後に$を付けること。
]]>

</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>


といった感じで定型文を作成したら拡張子を.snippetで保存する。
あとはVSにてツール>コードスニペットマネージャーにてインポートすればいいだけ。

お手軽なわりに強力な機能だと思う。

ねよっと。

ReadOnlyCollectionの抜け道を作っておく

配列やListをカプセル化したいに便利なのがReadOnlyCollection。

でも抜け道を作りたい!って思って
public class MyReadOnlyCollection<T> : ReadOnlyCollection<T>
{
public List<T> SourceList;
public MyReadOnlyCollection(List<T> l)
: base(l)
{
SourceList = l;
}
}

こんなものを用意した。
でも「この時点で危険な設計じゃね」って話であり。
10秒後にこのクラスは消えた

そんな短命のクラスの亡霊がこのブログにこの記事をかかせたそうな。
うっさい。俺。ねよっと。
プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。