How to use cuda for random access to a vertex table

I want random access to a vertex table (storing the coordinates of vertices). OpenGL provides glVertexPointer() to glDrawElements() to do this job efficiently. We provide the vertex table to glVertexPointer() and glDrawElements() uses index array to access the vertex table. Since the indices of the vertex of a triangles can be in any order, it seems there is no favorable memory access pattern. I wonder how this is done efficiently in the implementation of OpenGL in NVIDIA. What is the efficiency way for cuda to do the job(random access to a vertex table). One way I can think of is to bind the vertex table to texture and access the texture using the indices for the coordinates. But the order of a triangles would be of no locality, I doubt that texture does not help. Then what are the better ways?


It sounds like you have a good handle on the concerns. Maybe this paper might help. I’ve only read the abstract though I’m not sure if it will help for your application.

“Optimization of Mesh Locality for Transparent Vertex Caching”, Hoppe (Microsoft Research)