在OpenTK中使用顶点数组 | 您所在的位置:网站首页 › interleaved翻译 › 在OpenTK中使用顶点数组 |
我知道使用VBO可能更好,但我有个人理由使用顶点数组(除了我的好奇心)。 在C++中,这里使用顶点数组: // "vertices" is an array of Vertex Struct const char* data = reinterpret_cast(vertices); glVertexPointer(2, GL_FLOAT, sizeof(Vertex), data + 0)); glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), data + 8)); glColorPointer(4, GL_FLOAT, sizeof(Vertex), data + 16)); glDrawArrays(GL_QUADS, 0, vertexCount);指针在C++中传递并很好地工作,但是,我无法使它在C#中与OpenTK一起工作。我跟踪了正式文件,最后得到了以下代码: Vertex[] vertices = // .. Fill some vertex here unsafe { fixed (Vertex* data = vertices) { GL.VertexPointer(2, VertexPointerType.Float, Vertex.Stride, new IntPtr(data + 0)); GL.TexCoordPointer(2, TexCoordPointerType.Float, Vertex.Stride, new IntPtr(data + 8)); GL.ColorPointer(4, ColorPointerType.Float, Vertex.Stride, new IntPtr(data + 16)); // Draw the Vertices GL.DrawArrays(PrimitiveType.Quads, 0, vertices.length); GL.Finish(); // Force OpenGL to finish rendering while the arrays are still pinned. } }我得到的只是空白的白色,什么也没有显示。 我尝试在VBO实现中使用相同的顶点,也使用类似的顶点指针代码,它工作正常,所以我认为它不是设置代码错误,我确信Vertex.Stride返回Vertex结构的有效步长。 有什么想法吗? |
CopyRight 2018-2019 实验室设备网 版权所有 |