blob: f2e04408f84aee00ca5b434566bf1dc1e78a6e73 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#pragma once
#include <cstring>
#include <SFML/Graphics.hpp>
#include <cuda_gl_interop.h>
#include <LLBM/memory.h>
cudaSurfaceObject_t bindTextureToCuda(sf::Texture& texture) {
GLuint gl_tex_handle = texture.getNativeHandle();
cudaGraphicsResource* cuda_tex_handle;
cudaArray* buffer;
cudaGraphicsGLRegisterImage(&cuda_tex_handle, gl_tex_handle, GL_TEXTURE_2D, cudaGraphicsRegisterFlagsNone);
cudaGraphicsMapResources(1, &cuda_tex_handle, 0);
cudaGraphicsSubResourceGetMappedArray(&buffer, cuda_tex_handle, 0, 0);
cudaResourceDesc resDesc;
resDesc.resType = cudaResourceTypeArray;
resDesc.res.array.array = buffer;
cudaSurfaceObject_t cudaSurfaceObject = 0;
cudaCreateSurfaceObject(&cudaSurfaceObject, &resDesc);
return cudaSurfaceObject;
}
|