Hi Sajjadul, The general approach looks fine. I haven't worked with OpenCL yet, and haven't seen the rest of your window/OpenCL setup so can't say what might be amiss.
The only thing I can suggest is that you need to make sure that the GraphcisWindow is realized before you can start using the Window handles. Robert. On 18 September 2013 23:26, Sajjadul Islam <[email protected]> wrote: > Hi forum, > > I think Graphics Context actually encapsulates information on the way in > which scene objects are drawn and rendering states are applied. OSG uses > the osg::GraphicsContext class to represent the abstract graphics context. > > In one of the functions that i am writing now, takes a > osg::GraphicsContext class object as parameter and from this i need to > derive a OS specific window handle and i am not sure how to do it. I did > not find any example to it either. > > Right now i am doing it in the following manner and i think it is not > correct. > > > Code: > > > #ifdef _WIN32 > #include <osgViewer/api/Win32/GraphicsHandleWin32> > #elif defined(__GNUC__) > #include <osgViewer/api/X11/GraphicsHandleX11> > #elif defined( __APPLE__) > #include <osgViewer/api/Carbon/GraphicsHandleCarbon> > #endif > .................................. > .................................. > > bool Context::setupDeviceAndContext(osg::GraphicsContext &ctx) > { > ........................... > #ifdef defined(_WIN32) > osgViewer::GraphicsHandleWin32 *windowsContext = NULL; > #elif defined( __GNUC__) > osgViewer::GraphicsHandleX11 *linuxContext = NULL; > #elif defined( __APPLE__ ) > osgViewer::GraphicsHandleCarbon *osxContext = NULL; > #endif > > //platform dependent casting for the OpenCL context creation > #ifdef defined(_WIN32) > windowsContext = dynamic_cast<osgViewer::GraphicsHandleWin32*>(&ctx); > > if(NULL == windowsContext) > { > osg::notify(osg::FATAL) << "Win32 Graphics Context Casting is > unsuccessful" << std::endl; > return false; > } > #elif defined(__GNUC__) > linuxContext = dynamic_cast<osgViewer::GraphicsHandleX11*>(&ctx); > > if(NULL == linuxContext) > { > osg::notify(osg::FATAL) << "X11 Graphics Context Casting is > unsuccessful" << std::endl; > return false; > } > #elif defined(__APPLE__) > osxContext = dynamic_cast<osgViewer::GraphicsHandleCarbon*>(&ctx); > > if(NULL == osxContext) > { > osg::notify(osg::FATAL) << "MACOSX Graphics Context Casting is > unsuccessful. " << std::endl; > return false; > } > #endif > ........................................................ > } > > > > > ......... > I need this OS specific Window Handle to create a context property for > OpenCL device as follows: > > > Code: > > cl_context_properties contextProperties[] = > { > #ifdef defined(_WIN32) > CL_CONTEXT_PLATFORM, (cl_context_properties) _m_clPlatform, > CL_GL_CONTEXT_KHR, (cl_context_properties) > windowsContext->getWGLContext(), > CL_WGL_HDC_KHR, (cl_context_properties) > windowsContext->getHDC(), > #elif defined(__GNUC__) > CL_CONTEXT_PLATFORM, (cl_context_properties) _m_clPlatform, > CL_GL_CONTEXT_KHR, (cl_context_properties) > linuxContext->getContext(), > CL_GLX_DISPLAY_KHR, (cl_context_properties) > linuxContext->getDisplay(), > #elif defined(__APPLE__) > CGLContextObj glContext = CGLGetCurrentContext(); // get the > current GL context > CGLShareGroupObj shareGroup = CGLGetShareGroup(glContext); // > share group > > CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, > (cl_context_properties) shareGroup, > #endif > 0 > }; > > > > > > You do not need to worry about the OpenCL stuff here. I just need to know > how to derive OS specific window handles from osg::GraphicsContext ? > > Is it the proper way to do it as i am doing right now ? I am having > trouble in this manner because OpenCL context creation is giving me > undefined behavior. > > If i am correct , then i have to concentrate some where else in the code. > > I really need your hint over this issue. > > > Cheers, > Sajjadul > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=56407#56407 > > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

