LiU Electronic Press
Download:
File size:
608 kb
Format:
application/pdf
Author:
de Vahl, Joel (Linköping University, Department of Electrical Engineering)
Title:
Intercepting OpenGL calls for rendering on 3D display
Department:
Linköping University, Department of Electrical Engineering
Responsible org.:
Linköping University, Department of Electrical Engineering
Publication type:
Student thesis
Language:
English
Publisher: Institutionen för systemteknik
Level:
Independent thesis Basic level (professional degree), 20 points / 30 hp
Undergraduate subject:
Image Coding
Uppsok:
samhälle/juridik
Pages:
57
Year of publ.:
2005
URI:
urn:nbn:se:liu:diva-5496
Permanent link:
http://urn.kb.se/resolve?urn=urn:nbn:se:liu:diva-5496
ISRN:
LiTH-EX--05/3748--SE
Subject category:
Computer Science
SVEP category:
Data processing
Keywords(en) :
3D, display, OpenGL, DLL, intercept
Abstract(en) :

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.

Supervisor:
Ragnemalm, Ingemar (Linköping University, Department of Electrical Engineering)
Ericson, Thomas
Examiner:
Ragnemalm, Ingemar (Linköping University, Department of Electrical Engineering)
Available from:
2006-01-23
Created:
2006-01-23
Statistics:
1382 hits
FILE INFORMATION
File size:
608 kb
Mimetype:
application/pdf
Type:
fulltext
Statistics:
524 hits