Ситуация: Я рисую с OpenGL в C # с библиотекой OpenTK.
.
Проблема: Я не могу выбрать, какой из моих буферов / наборов вершин нарисовать.
.
Setup-Function:
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();
.
Что хотел бы сделать:
В установочном коде я создаю свои вершины (вершина включает положение и цвет). Я создаю один набор прямо сейчас, но я хотел бы создать еще один (точно такой же код с разными значениями цвета). Я сделал это, и, конечно, можно создать его и связать со вторичным буфером (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, кажется, берет все без контроля над тем, что рисовать.
Все в вершинах / массивах будет / будет идентичным, кроме цветов. Мне просто нужно визуализировать те же объекты - тысячи точек - с помощью другой «схемы цветов».
Любая помощь будет оценена.