2015-03-10 1 views
1

Я создаю систему частиц, используя OpenGL и OpenCL. Мне нужно разделить VBOs между OpenGL и OpenCL и, следовательно, создать контекст OpenCL с соответствующими свойствами.Как создать общий контекст между OpenGL и OpenCL с glfw3 на OSX?

Я знаю, что glfw3 предоставляет некоторые собственные функции API, но я не могу понять, как получить доступ к CGL.

https://github.com/glfw/glfw/blob/master/include/GLFW/glfw3native.h

я в основном нужно найти, как запустить это с glfw3:

CGLContextObj kCGLContext = CGLGetCurrentContext(); 
CGLShareGroupObj kCGLShareGroup = CGLGetShareGroup(kCGLContext); 

cl_context_properties properties[] = 
{ 
    CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, 
    (cl_context_properties)kCGLShareGroup, 
    0 
}; 

Проблема также discussed on the glfw github но не дает ответа на вопрос, для OSX.

ответ

0

Документация glfw3native.h здесь: http://www.glfw.org/docs/latest/glfw3native_8h.html

Я не знаком с OSX, но я предполагаю, что вы хотите использовать glfwGetNSGLContext получить контекст GL. Я считаю, что вы все равно можете использовать CGLGetCurrentContext, даже если вы используете GLFW, и вам все равно придется использовать CGLGetShareGroup в любом случае.

0

Один из вариантов заключается в использовании функции opengl_create_shared_context(), предоставляемой библиотекой Boost.Compute. Эта функция позволяет обрабатывать специфические для платформы проблемы, возникающие при создании общего контекста OpenCL-OpenGL.

0

Пожалуйста, взгляните на my answer to a similar post.

На самом деле вам не нужны методы glfw3 для доступа к текущему контексту OpenGL. Только #include следующие заголовочные файлы, и вам должно быть хорошо идти с вашим примером кода.

#include <OpenCL/opencl.h> 
#include <OpenGL/OpenGL.h> 
Смежные вопросы