I'm trying to write real-time raytracer. I use Java and Jogamp bindings of OpenGL and OpenCL for it (calls Jogl and Jocl). I already have raytracing code in my .cl kernel and its works well. I get output as FloatBuffer and pass it to the OpenGL texture via glTexImage2D. Now I want to go realtime, and to achive this I want to remove FloatBuffer copy which happens twice in my program (first - from OpenCL kernel result to RAM, and second from RAM to OpenGL texture). Obvious there is a way to point OpenCL buffer from OpenGL texture direct, cause all calculations works on GPU. I know that there is cl_khr_gl_sharing extention for OpenCL which do what I want. But I can't understand how to use this in Java Jogamp bindings (jocl/jogl). Can somebody helps me or give some sample JAVA code (not C++ which is really differs in details)?
How to use cl_khr_gl_sharing in Jocl?
189 Views Asked by Crabonog At
1
There are 1 best solutions below
Related Questions in JAVA
- Initialize matrix
- Why is my program adding int as string (4+7 = 47)?
- How to save gensim LDA topics output to csv along with the scores?
- Update a text file with ( new words+ \n ) after the words is appended into a list
- Removing URL features from tokens in NLTK
- python, global name not defined
- Why does collections.OrderedDict use try and except to initialize variables?
- Invalid URL: No host supplied : error while using Request.get(url) in Python
- Python GUI application to copy files one location to another location
- Why I receive CERTIFICATE_VERIFY_FAILED from google adwords api?
Related Questions in OPENGL
- Initialize matrix
- Why is my program adding int as string (4+7 = 47)?
- How to save gensim LDA topics output to csv along with the scores?
- Update a text file with ( new words+ \n ) after the words is appended into a list
- Removing URL features from tokens in NLTK
- python, global name not defined
- Why does collections.OrderedDict use try and except to initialize variables?
- Invalid URL: No host supplied : error while using Request.get(url) in Python
- Python GUI application to copy files one location to another location
- Why I receive CERTIFICATE_VERIFY_FAILED from google adwords api?
Related Questions in OPENCL
- Initialize matrix
- Why is my program adding int as string (4+7 = 47)?
- How to save gensim LDA topics output to csv along with the scores?
- Update a text file with ( new words+ \n ) after the words is appended into a list
- Removing URL features from tokens in NLTK
- python, global name not defined
- Why does collections.OrderedDict use try and except to initialize variables?
- Invalid URL: No host supplied : error while using Request.get(url) in Python
- Python GUI application to copy files one location to another location
- Why I receive CERTIFICATE_VERIFY_FAILED from google adwords api?
Related Questions in JOGL
- Initialize matrix
- Why is my program adding int as string (4+7 = 47)?
- How to save gensim LDA topics output to csv along with the scores?
- Update a text file with ( new words+ \n ) after the words is appended into a list
- Removing URL features from tokens in NLTK
- python, global name not defined
- Why does collections.OrderedDict use try and except to initialize variables?
- Invalid URL: No host supplied : error while using Request.get(url) in Python
- Python GUI application to copy files one location to another location
- Why I receive CERTIFICATE_VERIFY_FAILED from google adwords api?
Related Questions in JOCL
- Initialize matrix
- Why is my program adding int as string (4+7 = 47)?
- How to save gensim LDA topics output to csv along with the scores?
- Update a text file with ( new words+ \n ) after the words is appended into a list
- Removing URL features from tokens in NLTK
- python, global name not defined
- Why does collections.OrderedDict use try and except to initialize variables?
- Invalid URL: No host supplied : error while using Request.get(url) in Python
- Python GUI application to copy files one location to another location
- Why I receive CERTIFICATE_VERIFY_FAILED from google adwords api?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
So, after few days of research I find how to do it. Posting an answer for anybody who interest.
In "init" method of Jogl's GLEventListener you create GL context. You must create CL context in that method too. My sample code for this:
The core line is:
clContext.createFromGLTexture2d(GL4.GL_TEXTURE_2D, textureIndex, 0, Mem.WRITE_ONLY);
You should create an OpenCL texture object for your previous created OpenGL texture. Code of creating OpenGL texture:And the last - you must use right data type of texture argument in your OpenCL kernel. In my case kernel method has the following signature:
and I use write_imagef build-in OpenCL method to write float data (0.0f - 1.0f) into this texture.
Feel free to ask me about this approach if you interested.