状況:私はOpenTKライブラリでOpenGLをC#で描画しています。OpenTK:VBOで異なる色を使用する
。
問題:私のバッファ/描画する頂点のセットを選択できません。
。
セットアップ-機能:
var vertices = new Vertex[..];
は頂点
foreach(..)
{
Byte4 color = new Byte4();
color.R = 255;
color.G = 0;
color.B = 0;
color.A = 100;
Vertex vertex;
vertex.Position = new Vector3(.....);
vertex.Color = color;
vertices[index] = vertex;
}
/バインド・バッファの生成を作成します。これが重要な場合
vbo_size = vertices.Length;
GL.GenBuffers(1, out vbo_id);
GL.BindBuffer(BufferTarget.ArrayBuffer, vbo_id);
GL.BufferData<Vertex>(BufferTarget.ArrayBuffer, (IntPtr)(vbo_size * Vertex.SizeInBytes), vertices, BufferUsageHint.StaticDraw);
GL.InterleavedArrays(InterleavedArrayFormat.C4ubV3f, 0, IntPtr.Zero);
* Vertex.SizeInBytesは16です。
。
レンダリングコード:
GL.Enable(EnableCap.DepthTest);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
..
GL.Enable(EnableCap.ColorArray);
GL.DrawArrays(BeginMode.Points, 0, vbo_size);
GL.Disable(EnableCap.ColorArray);
..
glControl1.SwapBuffers();
。私は私の頂点を作成し、セットアップコードで
(頂点の位置や色などが):何のidやりたい
。私は今、1つのセットを作成しますが、私はもう1つ(異なる色の値を持つ同じコード)を作成したいと思います。私はこれを行いました。もちろん、それを作成して二次バッファ(vbo_id/vbo_secondary_id)にバインドしても問題ありません。しかし、どうやってそれを描くのですか?このような
何かが私が探していますものです:
RenderNormalColors()
{
GL.UseVboId(vbo_id);
GL.DrawArrays(BeginMode.Points, 0, vbo_size);
}
RenderAlternativeColors()
{
GL.UseVboId(vbo_id_secondary);
GL.DrawArrays(BeginMode.Points, 0, vbo_size);
}
GL.DrawArrays描画するかの制御せずにすべてを取るように見えます。
頂点/配列内のすべてが色とは別になります。私はちょうど別の "colorscheme"と同じオブジェクト(数千点)をレンダリングする必要があります。
どのようなヘルプもうまくいくでしょう。