Intercepting OpenGL calls for rendering on 3D display
Independent thesis Basic level (professional degree), 20 points / 30 hpStudent thesis
An OpenGL applications usually renders to a single frame. Multi-view or 3D displays on the other hand, needs more more images representing different viewing directions on the same scene, but modifying a large number of applications would be unsuitable and problematic. However, intercepting and modifying these calls before they reach the GPU would dramatically decrease the amount of work needed to support a large number of applications on a new type of multi-view or 3D display. This thesis describes different ways on intercepting, enqueueing and replaying these calls to support rendering form different view points. Intercepting with both an own implementation of opengl32.dll and an OpenGL driver is discussed, and enqueueing using classes, function pointers and enumeration of functions is tried. The different techniques are discussed quickly with the focus being a working implementation. This resulting in an fully blown OpenGL interceptor with the ability to enqueue and replay a frame multiple times while modifying parameters such as the projection matrix. This implementation uses an own implementation of opengl32.dll that is placed in the application directory to be loaded before the real one. Enqueueing is performed by enumerating all OpenGL calls, pushing this enumeration value and all call data to a list Replaying is done by reading the same list and calling the function pointer associated with the enumeration value with the data in the list.
Place, publisher, year, edition, pages
Institutionen för systemteknik , 2005. , 57 p.
3D, display, OpenGL, DLL, intercept
IdentifiersURN: urn:nbn:se:liu:diva-5496ISRN: LiTH-EX--05/3748--SEOAI: oai:DiVA.org:liu-5496DiVA: diva2:21335
Ragnemalm, IngemarEricson, Thomas