From 5eb43ef0675e6978948a9d6d0a329efb61c25be1 Mon Sep 17 00:00:00 2001 From: Vilya Harvey Date: Wed, 18 Aug 2010 23:54:42 +0100 Subject: [PATCH] Added an orthographic camera class to the main VGL code. This is a fancy way of saying that I moved the OrthoCamera from the imageview example into the main codebase. :-) --- Makefile | 2 ++ example/imageview.cpp | 35 +---------------------------------- src/vgl.h | 28 +++++++++++++++++++++------- src/vgl_orthocamera.cpp | 30 ++++++++++++++++++++++++++++++ src/vgl_orthocamera.h | 22 ++++++++++++++++++++++ 5 files changed, 76 insertions(+), 41 deletions(-) create mode 100644 src/vgl_orthocamera.cpp create mode 100644 src/vgl_orthocamera.h diff --git a/Makefile b/Makefile index 47f6b4f..e4e3fb8 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,7 @@ LIBVGL_OBJS := \ $(OBJ)/vgl_camera.o \ $(OBJ)/vgl_image.o \ $(OBJ)/vgl_objparser.o \ + $(OBJ)/vgl_orthocamera.o \ $(OBJ)/vgl_parser.o \ $(OBJ)/vgl_plane3.o \ $(OBJ)/vgl_plyparser.o \ @@ -65,6 +66,7 @@ LIBVGL_INCS := \ $(DIST)/include/vgl_matrix3.h \ $(DIST)/include/vgl_matrix4.h \ $(DIST)/include/vgl_objparser.h \ + $(DIST)/include/vgl_orthocamera.h \ $(DIST)/include/vgl_parser.h \ $(DIST)/include/vgl_plane3.h \ $(DIST)/include/vgl_plyparser.h \ diff --git a/example/imageview.cpp b/example/imageview.cpp index 7fb69ac..ed5582c 100644 --- a/example/imageview.cpp +++ b/example/imageview.cpp @@ -7,16 +7,6 @@ // CLASSES // -class OrthoCamera : public vgl::BaseCamera -{ -public: - OrthoCamera(unsigned int pixelWidth, unsigned int pixelHeight); - - virtual void setupProjectionMatrix(); - virtual void setupModelViewMatrix(); -}; - - class ImageViewRenderer : public vgl::Renderer { public: @@ -30,29 +20,6 @@ class ImageViewRenderer : public vgl::Renderer }; -// -// OrthoCamera METHODS -// - -OrthoCamera::OrthoCamera(unsigned int pixelWidth, unsigned int pixelHeight) : - vgl::BaseCamera(pixelWidth, pixelHeight) -{ -} - - -void OrthoCamera::setupProjectionMatrix() -{ - int viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - glOrtho(viewport[0], viewport[2], viewport[1], viewport[3], -0.5, 0.5); -} - - -void OrthoCamera::setupModelViewMatrix() -{ -} - - // // ImageViewRenderer METHODS // @@ -109,7 +76,7 @@ int main(int argc, char** argv) } vgl::RawImage* img = new vgl::RawImage(argv[1]); - OrthoCamera* camera = new OrthoCamera(img->getWidth(), img->getHeight()); + vgl::Camera* camera = new vgl::OrthoCamera(img->getWidth(), img->getHeight()); ImageViewRenderer* renderer = new ImageViewRenderer(img); vgl::Viewer viewer("VGL Image Viewer", img->getWidth(), img->getHeight(), camera, renderer); diff --git a/src/vgl.h b/src/vgl.h index 9170505..c54b78e 100644 --- a/src/vgl.h +++ b/src/vgl.h @@ -5,22 +5,36 @@ // individually. You may still wish to include them separately to help keep // compile times down, though. -#include "vgl_basecamera.h" -#include "vgl_camera.h" -#include "vgl_image.h" +// Maths #include "vgl_matrix3.h" #include "vgl_matrix4.h" -#include "vgl_parser.h" #include "vgl_plane3.h" -#include "vgl_quaternion.h" #include "vgl_ray3.h" -#include "vgl_renderer.h" -#include "vgl_utils.h" #include "vgl_vec2.h" #include "vgl_vec3.h" #include "vgl_vec4.h" +#include "vgl_quaternion.h" + +// Cameras +#include "vgl_basecamera.h" +#include "vgl_camera.h" +#include "vgl_orthocamera.h" + +// Image files +#include "vgl_image.h" + +// Model files +#include "vgl_parser.h" + +// Rendering +#include "vgl_renderer.h" + +// GUI #include "vgl_viewer.h" +// Miscellaneous +#include "vgl_utils.h" + #define GL_GLEXT_PROTOTYPES 1 #ifdef linux #include diff --git a/src/vgl_orthocamera.cpp b/src/vgl_orthocamera.cpp new file mode 100644 index 0000000..74f2228 --- /dev/null +++ b/src/vgl_orthocamera.cpp @@ -0,0 +1,30 @@ +#include "vgl_orthocamera.h" + +namespace vgl { + + +// +// OrthoCamera METHODS +// + +OrthoCamera::OrthoCamera(unsigned int pixelWidth, unsigned int pixelHeight) : + BaseCamera(pixelWidth, pixelHeight) +{ +} + + +void OrthoCamera::setupProjectionMatrix() +{ + int viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + glOrtho(viewport[0], viewport[2], viewport[1], viewport[3], -0.5, 0.5); +} + + +void OrthoCamera::setupModelViewMatrix() +{ +} + + +} // namespace vgl + diff --git a/src/vgl_orthocamera.h b/src/vgl_orthocamera.h new file mode 100644 index 0000000..0a4d7cb --- /dev/null +++ b/src/vgl_orthocamera.h @@ -0,0 +1,22 @@ +#ifndef vgl_orthocamera_h +#define vgl_orthocamera_h + +#include "vgl_basecamera.h" + +namespace vgl { + + +class OrthoCamera : public vgl::BaseCamera +{ +public: + OrthoCamera(unsigned int pixelWidth, unsigned int pixelHeight); + + virtual void setupProjectionMatrix(); + virtual void setupModelViewMatrix(); +}; + + +} // namespace vgl + +#endif // vgl_orthocamera_h +