情況:我使用C++ OpenGL繪圖庫。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喜歡做的事:
在設置代碼創建我的頂點(頂點包括位置和顏色)。我現在創建一個集合,但是我想創建一個(只是具有不同顏色值的相同代碼)。我這樣做了,當然可以創建它並將其綁定到輔助緩衝區(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似乎沒有采取什麼畫控制一切。
除了顏色之外,頂點/數組中的所有東西都是相同的。我只需要用另一個「顏色方案」呈現相同的對象 - 數千個點。
任何幫助將appriciated。