0
我有大量的領域。我做一個cudamemcpy並將質量位置,電荷,初始速度和半徑傳送到設備。我計算所有球體之間的相互作用並計算最終位置。我的問題是我想渲染這些領域如何使用CUDA interop渲染球體?
GLuint vbo[2];
glGenBuffers(2, vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
unsigned int size = numBodies * 4 * sizeof(float);
float4* initialpos = (float4*)malloc(numBodies*4*sizeof(float));
for(unsigned int i = 0; i < numBodies; i++)
{
// Initialize initialpos which are the centers of the spheres
}
glBufferData(GL_ARRAY_BUFFER, size, initialpos, GL_DYNAMIC_DRAW);
free(initialpos);
glBindBuffer(GL_ARRAY_BUFFER, vbo[1]);
glBufferData(GL_ARRAY_BUFFER, size, 0, GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
// register vbo with CUDA
cudaGLRegisterBufferObject(vbo[0]);
cudaGLRegisterBufferObject(vbo[1]);
//inside the display function
float4* oldPos;
float4* newPos;
cudaGLMapBufferObject((void**)&newPos, vbo[1-swap])
cudaGLMapBufferObject((void**)&oldPos, vbo[swap]);
//Call a C function which calls LAUNCHES CUDA KERNEL with old and new Positions
// Unmap Buffer Objects
swap = 1 - swap;
我在內核中更改newpos和oldPos。現在要畫點我會 使用glDrawElements(GL_POINTS,.....);
我的問題是如何繪製這個數據的球體,因爲newpos數組的每個4個字節都有一個基本類似於GL_POINTS類似「GL_SPHERES」的球體的中心。
你看看CUDA SDK示例SimpleGL。它使用cuda在緩衝區中渲染,然後使用opengl繪製結果。 – geek