140 likes | 374 Views
Design of a 2D Graphics Engine. By Joe Hallahan. What is an Engine?. Software engine: core of the program Internal as opposed to visible Others (physics, database) excel at one task only, “software engine” is more general Emphasis on graphics. Benefits. Reusable, safe
E N D
Design of a 2D Graphics Engine By Joe Hallahan
What is an Engine? • Software engine: core of the program • Internal as opposed to visible • Others (physics, database) excel at one task only, “software engine” is more general • Emphasis on graphics
Benefits • Reusable, safe • Framework for program – everything else is specific/detail work
Purpose • To create an engine using C++, OpenGL, and SDL that can simplify the process required for creating a graphical application by rendering graphics automatically and providing support for other general functions
Design - Tools • C++ • Fast, efficient • SDL • Free • Makes many functions easier • Works well with OpenGL • Cross-platform
Design - Tools • OpenGL • 2D and 3D support • Can be hard to learn/use • Free, supported on most systems • Really really fast
Design - Structure • Engine.h contains declarations of variables, functions, classes, also includes external libraries • Engine.cpp defines everything declared in Engine.h • A third program can be used to test the engine, all that is really necessary is the main() method
Problems to Overcome • Data structure • Array used • Holds Shapes • Only holds up to 100 objects
Testing #include "Engine.h" int main(int argc, char* argv[]){ Engine e; e.run(); return 0; }
Testing / Analysis • 3 test programs • Simple Test • Bare minimum – no external program, just a main method • Pong • Game, familiar • Simple, controls supported through SDL • Engine Demo • Colors • Collisions
Conclusion • Engine works correctly • Performance mainly hardware dependent, should be about as efficient as a normal program made without using engine • No performance loss
Expandability • 3D support • Sound • More inputs • More performance tweaks • Better collision detection • Will hurt performance in most cases • Specialization
Bibliography • -Development of a 3D Graphics Engine (Kassing) • -Modular Architecture for Computer Game Design (McNeill) • -Multi-threaded Game Engine (Tulip, Bekkema, Nesbitt) • -Interactive 3D Geometry in OpenGL (Welsh) • -FROG: The Fast \& Realistic OPENGL Displayer • -Simple and rapid collision detection using multiple viewing volumes (Fan, Wan, Gao)