Editing User:AnkushKhandelwal/OpenGLRendering
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | + | '''OpenGL Framework''' | |
− | ''' | + | Brief Description: The Objective of the project is to Re-factor and re-write the existing code of OpenSCAD preferably by implementing or using an existing rendering/scenegraph framework for cleaner rendering code. This code can be imported to softwares like GLES2 which opens up more possibilities like WebGL and native support for ARM Linux platforms that usually only provide GLES2 implementation. |
− | |||
− | |||
− | |||
− | Brief Description: The Objective of the project is to Re-factor and re-write the existing code of OpenSCAD preferably by implementing or using an existing rendering/scenegraph framework for cleaner rendering code. This | ||
==Personal Information== | ==Personal Information== | ||
Line 11: | Line 7: | ||
*'''IRC username''': ank_95 | *'''IRC username''': ank_95 | ||
*'''Contact Number''': +918886330979 | *'''Contact Number''': +918886330979 | ||
− | |||
− | |||
==Background Information== | ==Background Information== | ||
− | * Pursuing Computer Science from IIIT Hyderabad, Andhra Pradesh, India. Currently in 2nd year | + | * Pursuing Computer Science from IIIT Hyderabad, Hyderabad, Andhra Pradesh, India. Currently in 2nd year. |
− | + | * Worked in c, c++ and OpenGL 2/3. | |
− | * Worked in c, c++ and OpenGL | ||
− | |||
* Interested in Graphics and front-end development. | * Interested in Graphics and front-end development. | ||
* I am a Linux user and want to step in the Open Source World. | * I am a Linux user and want to step in the Open Source World. | ||
− | * I am familiar with git. | + | * I am familiar with git. Commit my work on git using github account(github.com/ankush1995). |
− | |||
− | |||
==Project Information== | ==Project Information== | ||
Line 42: | Line 32: | ||
https://github.com/openscad/openscad/wiki/Information-About-Other-Frameworks. | https://github.com/openscad/openscad/wiki/Information-About-Other-Frameworks. | ||
+ | '''Creating or Selecting Scenegraph/Rendering Library''' | ||
+ | |||
+ | The Goal of this library would be to provide rendering data structure to abstract buffer objects and also to manage Qt event mappings to camera. This Library will help to refactor internal OpenSCAD code instead of the current rendering used in OpenSCAD. The Rendering using the Library will be more simple and clean, it will be helpful for calling CGAL objects, Polyset objects and helper objects like axis display. | ||
'''Spliting the OpenGL code in Different classes - CODE EXTRACTION''' | '''Spliting the OpenGL code in Different classes - CODE EXTRACTION''' | ||
We need to split out the openGL code from the polyset classes and all other classes and make a different class or data structure and it is used directly. In All it should be a seperate component which takes objects (for example , polyset) and renders it, in an effort to isolate the rendering from the rest of the software. The code of OpenSCAD is in openGL 2 and 1.1 + extentions and also we have users on openGL 2 and openGL 1.1 + extentions , so abstracting away OpenGL extensions and version differences is important. | We need to split out the openGL code from the polyset classes and all other classes and make a different class or data structure and it is used directly. In All it should be a seperate component which takes objects (for example , polyset) and renders it, in an effort to isolate the rendering from the rest of the software. The code of OpenSCAD is in openGL 2 and 1.1 + extentions and also we have users on openGL 2 and openGL 1.1 + extentions , so abstracting away OpenGL extensions and version differences is important. | ||
− | + | If we know exactly how much GL code is in a file , the next step would be to turn it into a separate component, i.e. a class or set of functions that take a polyset as parameter and renders it. This class would then be responsible for converting polyset data into something more suitable for OpenGL.Foe example it does not make sense to render one single object in OpenGL ,it is not even supported in mordern OpenGL without enabling legacy compatibility. | |
− | |||
− | |||
− | |||
− | If we know exactly how much GL code is in a file , the next step would be to turn it into a separate component, i.e. a class or set of functions that take a polyset as parameter and renders it | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
If we can compile for example polyset without actually having OpenGL (e.g. on GLES2 box like Chromebook) in it then it will be a measure of success of code extraction. | If we can compile for example polyset without actually having OpenGL (e.g. on GLES2 box like Chromebook) in it then it will be a measure of success of code extraction. | ||
A patch has been submitted in which the OpenGL code is in one file and other renderin code is in another : https://github.com/openscad/openscad/pull/1249 | A patch has been submitted in which the OpenGL code is in one file and other renderin code is in another : https://github.com/openscad/openscad/pull/1249 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
'''Off-Screen Rendering''' | '''Off-Screen Rendering''' | ||
Line 82: | Line 58: | ||
'''Get to Know the Community''' | '''Get to Know the Community''' | ||
− | * Talk to the community members. | + | * Talk to the community members |
+ | * Get to know the code | ||
+ | * Identify Goals and Requirements. | ||
+ | |||
+ | '''Week 1''' | ||
* Getting comfortable with the code. | * Getting comfortable with the code. | ||
+ | * Understanding where to extract the OpenGL code. | ||
− | '''Week | + | '''Week 2''' |
− | * | + | * Starting separating GL code from the polyset class. |
− | |||
− | '''Week | + | '''Week 3''' |
− | * | + | * Putting the GL code in separate rendering class. |
− | * | + | * This class gets data to render from public polyset methods. |
− | |||
− | |||
− | '''Week 4 | + | '''Week 4''' |
− | * | + | * Most GL code lives in GLView.cc , putting the polyset rendering stuff in it. |
− | |||
− | |||
− | |||
− | |||
− | '''Week 5 | + | '''Week 5-6''' |
− | * | + | * Create an abstract supertype for GLView and let the new renderer subtype that clas |
− | + | * Continuing with making a superset class to render the GL code. | |
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
''' MID-term Evaluations''' | ''' MID-term Evaluations''' | ||
− | '''Week 7 | + | '''Week 7-8''' |
− | + | * Start working on view-modal. | |
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Deliverables== | ==Deliverables== | ||
− | * Cleaner rendering code | + | * Cleaner rendering code |
− | |||
* Better support and better responsiveness for bigger models | * Better support and better responsiveness for bigger models | ||
* view-modal of the OpenGL code | * view-modal of the OpenGL code | ||
Line 186: | Line 121: | ||
==Why OpenGL Rendering Project?== | ==Why OpenGL Rendering Project?== | ||
− | After I decided to work under this community, I explored various projects and this projects fascinated me and I thought that I am able to this project as I like | + | After I decided to work under this community, I explored various projects and this projects fascinated me and I thought that I am able to this project as I like OpenGL a lot and understands it better. I am pretty sure that I will able to do this project and if I do not know something I will learn it and apply in the project. I have looked through the code, various classes and libraries and understood it. After the completion, we can import the code and use it in other software like WebGL etc. |
==Why Me?== | ==Why Me?== | ||
− | I am very interested in programming and very enthusiastic about contributing in open source community | + | I am very interested in programming and very enthusiastic about contributing in open source community. Graphics is the one particular field that interests me a lot, I have a passion toward graphics and if I am given with the opportunity , even after the submission of project I would love to contribute in more projects for the community. I have already started working on this project and also in touch with project mentors. Also I can come up with new ideas and love to solve some real world problems. |
I will apply my full potential in doing the project, submitting every patch before deadline.I like OpenGL and like to use software for rendering 2d and 3d model designing so I know what are the things that user wants while using them. | I will apply my full potential in doing the project, submitting every patch before deadline.I like OpenGL and like to use software for rendering 2d and 3d model designing so I know what are the things that user wants while using them. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==Futher Scope== | ==Futher Scope== |