Ejemplo n.º 1
0
        /// <summary>
        /// 頂点属性のプログラム中の位置を設定する
        /// </summary>
        /// <param name="attribution">頂点属性</param>
        /// <param name="location">位置</param>
        public void SetLocation(VertexAttribution attribution, int location)
        {
            // 描画対象を有効化
            this.target.MakeCurrent();

            // VAOを有効化
            GL.BindVertexArray(this.vertexArray);

            // VBOを有効化(バインド)
            GL.BindBuffer(BufferTarget.ArrayBuffer, this.vertexBuffer);


            // 属性値を有効化
            GL.EnableVertexAttribArray(location);

            // パラメーターの位置を設定
            GL.VertexAttribPointer(
                location,
                attribution.Size,
                attribution.Type,
                attribution.Normalized,
                this.sizeInByte,
                attribution.Offset);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// バッファーにこのプログラムを割り当てる
        /// </summary>
        /// <param name="buffer">割り当てるバッファー</param>
        /// <param name="attribution">頂点属性の設定値</param>
        public void AttachBuffer(Buffer buffer, VertexAttribution[] attributions)
        {
            // バッファー群に追加
            this.buffers.Add(buffer);

            // 自分のプログラムを使用
            GL.UseProgram(this.ID);

            // 全頂点属性について
            foreach(var attribution in attributions)
            {
                // その位置を設定
                buffer.SetLocation(attribution, GL.GetAttribLocation(this.ID, attribution.Name));
            }
        }