/////////////////////////////////////////////////////////////////////////// Create PBO ///////////////////////////////////////////////////////////////////////////
| 154 | //! Create PBO |
| 155 | //////////////////////////////////////////////////////////////////////////////// |
| 156 | void createPBO(GLuint *pbo, struct cudaGraphicsResource **pbo_resource) |
| 157 | { |
| 158 | // set up vertex data parameter |
| 159 | num_texels = image_width * image_height; |
| 160 | num_values = num_texels * 4; |
| 161 | size_tex_data = sizeof(GLubyte) * num_values; |
| 162 | void *data = malloc(size_tex_data); |
| 163 | |
| 164 | // create buffer object |
| 165 | glGenBuffers(1, pbo); |
| 166 | glBindBuffer(GL_ARRAY_BUFFER, *pbo); |
| 167 | glBufferData(GL_ARRAY_BUFFER, size_tex_data, data, GL_DYNAMIC_DRAW); |
| 168 | free(data); |
| 169 | |
| 170 | glBindBuffer(GL_ARRAY_BUFFER, 0); |
| 171 | |
| 172 | // register this buffer object with CUDA |
| 173 | checkCudaErrors(cudaGraphicsGLRegisterBuffer(pbo_resource, *pbo, cudaGraphicsMapFlagsNone)); |
| 174 | |
| 175 | SDK_CHECK_ERROR_GL(); |
| 176 | } |
| 177 | |
| 178 | void deletePBO(GLuint *pbo) |
| 179 | { |