Editing New Cross-Platform 3D Display Manager
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: | ||
− | + | ==OGRE Display Manager== | |
− | BRL-CAD's primary means to interact graphically with geometry is provided by | + | BRL-CAD's primary means to interact graphically with geometry is provided by display managers, which handle drawing geometric wireframes, text, (sometimes) shaded trianges, and other in-display elements. Currently BRL-CAD has specific display managers for X11 Opengl (ogl), Windows OpenGL (wgl), and raw X11 (X), in addition to a variety of more special purpose and experimental display managers. Current display managers interact with a lot of platform specific features, which tends to lead towards increased maintenance and duplication of logic. |
− | + | OGRE (http://www.ogre3d.org/) is a cross platform, open source 3D graphics engine that provides the features needed to implement a display manager for BRL-CAD, while abstracting many of the low level platform specific details. The steps for this task would be: | |
− | |||
− | The steps for this task would be: | ||
# Review current display manager code to identify features a new display manager needs to support | # Review current display manager code to identify features a new display manager needs to support | ||
− | # Get OGRE | + | # Get OGRE running and embedded within a Tk window (this will be necessary for Archer/MGED to use the display manager). Bear in mind that one of the goals is to use this display manager on multiple platforms. |
− | # Identify how to perform the basic operations needed for a display manager, including | + | # Identify how to perform the basic operations needed for a display manager in OGRE, including |
#*line drawing | #*line drawing | ||
#*text display | #*text display | ||
− | #*keyboard and mouse input integration between OGRE | + | #*keyboard and mouse input integration between OGRE and Tk |
#*embedding a framebuffer window (see overlay/interlay/underlay settings in the MGED raytrace control panel) | #*embedding a framebuffer window (see overlay/interlay/underlay settings in the MGED raytrace control panel) | ||
# Writing routines to perform tasks needed (the display manager functionality) and hooking it into libdm | # Writing routines to perform tasks needed (the display manager functionality) and hooking it into libdm | ||
− | # Testing (ideally cross platform) | + | # Testing (ideally cross platform) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | A good proposal for this task would demonstrate a good understanding of what approaches would be taken to embed OGRE into Tk (if_ogl.c, our OpenGL framebuffer, does this with an OpenGL window) and what OGRE functionality would be utilized to perform wireframe drawing, text drawing, etc. | |
− | |||
− | + | Requirements: | |
*Familiarity with C and C++ | *Familiarity with C and C++ | ||
*(optional) Familiarity with OGRE | *(optional) Familiarity with OGRE | ||
− | |||
− | + | Difficulty: low | |
− |