]> git.tdb.fi Git - libs/gl.git/commitdiff
Add projection functions
authorMikko Rasa <tdb@tdb.fi>
Sat, 22 Sep 2007 17:01:48 +0000 (17:01 +0000)
committerMikko Rasa <tdb@tdb.fi>
Sat, 22 Sep 2007 17:01:48 +0000 (17:01 +0000)
Add enable/disable
Blender exporter: Fix a deprecation warning

mesh_export.py
source/misc.cpp
source/misc.h
source/projection.cpp [new file with mode: 0644]
source/projection.h [new file with mode: 0644]

index cdab35f3486b4dcb00ec1b0014d617235908030a..6b50a4ec013580df75d545b769fb6217b1dc4b00 100644 (file)
@@ -9,6 +9,7 @@ Group: 'Export'
 
 import sys
 import math
+import bpy
 import Blender
 
 class Edge:
@@ -161,9 +162,9 @@ class Exporter:
                return result
 
        def export(self):
-               scene=Blender.Scene.GetCurrent()
+               scene=bpy.data.scenes.active
 
-               obj=scene.getActiveObject()
+               obj=scene.objects.active
                if obj.getType()!="Mesh":
                        raise Exception, "Can only export Mesh data"
 
index 67b2a14266ea8c231d24f724bb4e94cf49e7df8c..9815383a793ade89f5e7b5d23221af70b77e7a1b 100644 (file)
@@ -10,12 +10,22 @@ Distributed under the LGPL
 namespace Msp {
 namespace GL {
 
+void enable(GLenum state)
+{
+       glEnable(state);
+}
+
+void disable(GLenum state)
+{
+       glDisable(state);
+}
+
 void set(GLenum state, bool value)
 {
        if(value)
-               glEnable(state);
+               enable(state);
        else
-               glDisable(state);
+               disable(state);
 }
 
 } // namespace GL
index 876904779ea983062b575e701e6e1e70df401445..071875cd43805db5db7f230849d1e2060c2972ca 100644 (file)
@@ -13,6 +13,8 @@ Distributed under the LGPL
 namespace Msp {
 namespace GL {
 
+void enable(GLenum);
+void disable(GLenum);
 void set(GLenum, bool);
 
 } // namespace GL
diff --git a/source/projection.cpp b/source/projection.cpp
new file mode 100644 (file)
index 0000000..1b7fa61
--- /dev/null
@@ -0,0 +1,52 @@
+/* $Id$
+
+This file is part of libmspgl
+Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
+#include <cmath>
+#include <GL/gl.h>
+#include "projection.h"
+
+namespace Msp {
+namespace GL {
+
+void ortho(double left, double right, double bottom, double top, double near, double far)
+{
+       glOrtho(left, right, bottom, top, near, far);
+}
+
+void ortho_centered(double width, double height)
+{
+       ortho(-width/2, width/2, -height/2, height/2, 0, 1);
+}
+
+void ortho_bottomleft(double width, double height)
+{
+       ortho(0, width, 0, height, 0, 1);
+}
+
+void ortho_topleft(double width, double height)
+{
+       ortho(0, width, -height, 0, 0, 1);
+}
+
+void frustum(double left, double right, double bottom, double top, double near, double far)
+{
+       glFrustum(left, right, bottom, top, near, far);
+}
+
+void frustum_centered(double width, double height, double near, double far)
+{
+       glFrustum(-width/2, width/2, -height/2, height/2, near, far);
+}
+
+void perspective(double fov_y, double aspect, double near, double far)
+{
+       double hh=tan(fov_y*M_PI/360)*near;
+       frustum(-hh*aspect, hh*aspect, -hh, hh, near, far);
+}
+
+} // namespace GL
+} // namespace Msp
diff --git a/source/projection.h b/source/projection.h
new file mode 100644 (file)
index 0000000..d38aa33
--- /dev/null
@@ -0,0 +1,54 @@
+/* $Id$
+
+This file is part of libmspgl
+Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
+#ifndef MSP_GL_PROJECTION_H_
+#define MSP_GL_PROJECTION_H_
+
+namespace Msp {
+namespace GL {
+
+/**
+Sets up an orthogonal projection.
+*/
+void ortho(double, double, double, double, double, double);
+
+/**
+Sets up an orthogonal projection, with origin at the center of the screen.
+*/
+void ortho_centered(double, double);
+
+/**
+Sets up an orthogonal projection, with origin at the bottom left corner of the
+screen.
+*/
+void ortho_bottomleft(double, double);
+
+/**
+Sets up an orthogonal projection, with origin at the top left corner of the
+screen.  The Y coordinate is reversed and grows downwards.
+*/
+void ortho_topleft(double, double);
+
+/**
+Sets up a perspective projection.
+*/
+void frustum(double, double, double, double, double, double);
+
+/**
+Sets up a perspective projection, with origin at the center of the screen.
+*/
+void frustum_centered(double width, double height, double near, double far);
+
+/**
+Sets up a centered perspective projection in a simple way.
+*/
+void perspective(double fov_y, double aspect, double near, double far);
+
+} // namespace GL
+} // namespace Msp
+
+#endif