2016-04-14 3 views
-1

Я изучаю OpenGL (используя OpenTK). Сегодня я хочу использовать VBO для эффективного рендеринга своих квадроциклов. Когда я звоню сделать его врезатьсяOpenTK - VBO - Крушение приложения

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application. 
================================================================= 

Full stacktrace can be found here

Это мой визуализации код:

GL.EnableVertexAttribArray(0); 

GL.BindBuffer(BufferTarget.ArrayBuffer, _vbo); 
GL.VertexAttribPointer(0, _count, VertexAttribPointerType.Float, false, 0, 0); 

GL.DrawArrays(PrimitiveType.Quads, 0, _count); 

GL.DisableVertexAttribArray(0); 

И это, как я генерировать буферов.

GL.GenBuffers(1, out _vbo); 
GL.BindBuffer(BufferTarget.ElementArrayBuffer, _vbo); 

Vector3[] vertices; 
_count = vertices.Length; 

GL.BufferData<Vector3>(BufferTarget.ArrayBuffer, new IntPtr(vertices.Length * Vector3.SizeInBytes), vertices, BufferUsageHint.StaticDraw); 

PS: Для этого я не использую никаких цветов или текстур.

+0

Я не уверен, но вы не инициализируете массив «Vector3 [] vertices;». Более того, вы запустите свой буфер как «BufferTarget.ElementArrayBuffer», но поместите данные в «BufferTarget.ArrayBuffer». И какую версию OpenGL вы используете, потому что с некоторыми более современными версиями вы также должны использовать Vertex Arrays. – Michael

+0

Определены вершины Майкла (я вырезал его из моего кода, где есть генератор). Я попытался изменить BufferTarget на те же значения (для обоих значений), но все еще не работает. – AbitDeveloper

ответ

0

Изменен визуализации кода этой

 GL.BindBuffer(BufferTarget.ArrayBuffer, _vbo); 
     GL.VertexPointer (3, VertexPointerType.Float, Marshal.SizeOf(new Vector3()), IntPtr.Zero); 
     GL.EnableClientState (ArrayCap.VertexArray); 

     GL.DrawArrays(PrimitiveType.Quads, 0, _count); 

     GL.DisableClientState (ArrayCap.VertexArray); 

, и она работала. Я использовал BufferTarget.ArrayBuffer везде (ElementArrayBuffer для индексов).

Смежные вопросы