public void 初期化する() { // シェイプシェーダーを作成する。 _D3DEffect = CGHelper.EffectFx5を作成するFromResource(@"MikuMikuFlex.Resource.Shader.ShapeShader.fx", RenderContext.Instance.DeviceManager.D3DDevice); // 頂点リストを作成し、それをもとに頂点バッファを作成する。 var 頂点リスト = new List <Vector4>(); InitializePositions(頂点リスト); _D3D頂点バッファ = CGHelper.D3Dバッファを作成する(頂点リスト, RenderContext.Instance.DeviceManager.D3DDevice, BindFlags.VertexBuffer); // インデックスバッファを作成する。 var builder = new インデックスバッファBuilder(); InitializeIndex(builder); _D3Dインデックスバッファ = builder.インデックスバッファを作成する(); // 入力レイアウトを作成する。 _D3D入力レイアウト = new InputLayout( RenderContext.Instance.DeviceManager.D3DDevice, _D3DEffect.GetTechniqueByIndex(0).GetPassByIndex(0).Description.Signature, シェイプ用入力エレメント.VertexElements); }
protected override void InitializeIndex(インデックスバッファBuilder builder) { uint n = _desc.DivideCount + 1; // 上のリング for (uint i = 0; i < _desc.DivideCount; i++) { builder.四角形を追加する(i, i + 1, (i + 1) + n, i + n); } // 下のリング for (uint i = 0; i < _desc.DivideCount; i++) { builder.四角形を追加する(i + n * 2, i + n * 3, (i + 1) + n * 3, (i + 1) + n * 2); } // 内面 for (uint i = 0; i < _desc.DivideCount; i++) { builder.四角形を追加する(i, i + n * 2, (i + 1) + n * 2, (i + 1)); } // 内面 for (uint i = 0; i < _desc.DivideCount; i++) { builder.四角形を追加する(i + n, i + 1 + n, (i + 1) + n * 3, i + n * 3); } }
protected override void InitializeIndex(インデックスバッファBuilder builder) { builder.四角形を追加する(4, 3, 2, 1); builder.角形を追加する(0, 3, 4); builder.角形を追加する(0, 2, 3); builder.角形を追加する(0, 1, 2); builder.角形を追加する(0, 4, 1); }
protected override void InitializeIndex(インデックスバッファBuilder builder) { builder.四角形を追加する(0, 1, 2, 3); builder.四角形を追加する(6, 5, 4, 7); builder.四角形を追加する(0, 3, 7, 4); builder.四角形を追加する(2, 1, 5, 6); builder.四角形を追加する(3, 2, 6, 7); builder.四角形を追加する(1, 0, 4, 5); }
protected abstract void InitializeIndex(インデックスバッファBuilder builder);