问题描述
我可以在以下方面寻求帮助吗?
我有一个Xamarin Android应用程序绘制一个立方体,效果很好。多维数据集定义为:
private float[] m_vertex_buffer_data = { // Front face
-1.0f,-1.0f,1.0f,// Back face
-1.0f,// Top face
-1.0f,// Bottom face
-1.0f,// Right face
1.0f,// Left face
-1.0f,-1.0f };
private uint[] m_indices_buffer_data = { 0,1,2,3,// front
4,5,6,4,7,// back
8,9,10,8,11,// top
12,13,14,12,15,// bottom
16,17,18,16,19,// right
20,21,22,20,23 }; // left
GL.DrawElements(BeginMode.Triangles,m_indices_buffer_data.Length,DrawElementsType.UnsignedInt,m_indices_buffer_data);
如何仅渲染立方体的给定面?
如果我打电话:
GL.DrawRangeElements(PrimitiveType.Triangles,m_indices_buffer_data);
我确实只会得到第一张面孔,但是如果我打电话给我,
GL.DrawRangeElements(PrimitiveType.Triangles,23,m_indices_buffer_data);
我仍然只有第一张面孔。 (如果我使用12而不是6,则会得到前两个面,依此类推)
基本上,对DrawRangeElements的调用忽略了我的第二个参数,我认为这是m_indices_buffer_data数组的偏移量(因此m_indices_buffer_data的元素12至23引用了m_vertex_buffer_data的元素“背面”。)
((我目前没有在任何地方调用GL.BufferData(BufferTarget.ElementArrayBuffer ...我读到某个地方,如果绑定ElementArrayBuffer则DrawRangeElements的最后一个参数的解释不同,这是问题吗?我添加:
GL.GenBuffers(1,out m_nIndicesBuffer);
GL.BindBuffer(BufferTarget.ElementArrayBuffer,m_nIndicesBuffer);
GL.BufferData(BufferTarget.ElementArrayBuffer,new IntPtr(m_indices_buffer_data.Length * sizeof(uint)),m_indices_buffer_data,BufferUsage.StaticDraw);
对于我的代码,该应用程序在Android模拟器中崩溃且没有断点)。
感谢您的帮助, 米奇。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)