Я создаю текстуру OpenGL следующим образом:
glGenTextures( 1, &boardTex );
glBindTexture( GL_TEXTURE_2D, boardTex );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_FLOAT, NULL);
Я получаю дескриптор на board
, поэтому я предполагаю, что текстура была успешно создана.Я хочу поделиться этой текстурой с CUDA, поэтому я регистрируюсь и сопоставляю ресурс:
cudaGLSetGLDevice(0);
cudaGraphicsGLRegisterImage( &boardImage, boardTex, GL_TEXTURE_2D, cudaGraphicsMapFlagsNone );
cudaGraphicsMapResources( 1, &boardImage, 0 );
Затем я пытаюсь получить сопоставленный указатель так:
float4* mappedPointer;
size_t mappedSize;
cudaGraphicsResourceGetMappedPointer( (void**)&mappedPointer, &mappedSize, boardImage );
К сожалению этот вызов возвращаетошибка и отказывается работать.Я на всякий случай убедился, что текстура не связана в контексте OpenGL.До сих пор не работает.cudaGetErrorString
дает "неизвестная ошибка" , поэтому я застрял здесь.Буду признателен за любые идеи.