[英]How can I create an shared context between OpenGL and OpenCL with glfw3 on OSX?
我正在使用OpenGL和OpenCL構建粒子系統。 我需要在OpenGL和OpenCL之間共享VBO,因此需要創建具有適當屬性的OpenCL上下文。
我知道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
};
在glfw github上也討論了該問題,但未回答OSX的問題。
glfw3native.h
的文檔在這里: http : glfw3native.h
我對OSX不熟悉,但是我假設您要使用glfwGetNSGLContext
來獲取GL上下文。 我相信你仍然可以使用CGLGetCurrentContext
即使您正在使用GLFW,看來你還是將不得不使用CGLGetShareGroup
反正。
一種選擇是使用Boost.Compute庫提供的opengl_create_shared_context()
函數。 此功能負責處理創建共享的OpenCL-OpenGL上下文時涉及的特定於平台的問題。
請看一下我對類似帖子的回答 。
實際上,您不需要glfw3
的方法來訪問當前的OpenGL上下文。 只需#include
以下頭文件,您就可以很好地使用示例代碼。
#include <OpenCL/opencl.h>
#include <OpenGL/OpenGL.h>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.