Treffer: Object oriented 3D graphics library
Science
Computer Science
Weitere Informationen
When it comes to 3D graphics there are many things that a software developer must struggle with. Aside from the choice of windowing system, platform, and compiler, there is the topicality of a 3D API. Most people do not have the time or money to implement a 3D API from the ground up, so most choose one that is already in existence. OpenGL is a generic low-level API that has been used over the years, and most video card manufacturers have added hardware acceleration to handle the OpenGL interface. OpenGL is implemented in C and is highly procedural in design; its interface does not provide a 3D API truly representative of the logical concepts behind 3D programming. The solution to implementing a conceptually correct 3D API is to make it object oriented. There have been several attempts to create an object-oriented 3D graphics API, but most have failed. Previous attempts such as OpenInventor, Crystal Space, Java3D, and Direct3D have grown into bloated software packages where extensibility suffered and many requirements and restrictions were placed on the user. The purpose of this work is a software development effort where a fully object-oriented 3D graphics API is designed and implemented. The result of this effort is a cross-platform API (Windows, Linux, and OSX) that operates with hardware acceleration (where available) and provides a logical interface to the objects used for designing and implementing a 3D graphics application. It abstracts the concepts into base classes with concrete implementations representing the mechanisms typically taught in the classroom. The primary difference between this effort and previous efforts is the fact that the objects defined don't just encapsulate a bunch of procedures; rather the interface contains information about the relationship between logical things. This project successfully implements an API that allows the end-user to write simpler easier to read code that follows the typical constructs of 3D programming. Though more work needs to be done to take advantage of the ...