--- /dev/null
+package jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl;\r
+\r
+import javax.media.opengl.GL;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.param.NyARFrustum;\r
+import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
+import jp.nyatla.nyartoolkit.core.param.NyARPerspectiveProjectionMatrix;\r
+import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.rgb.INyARRgbRaster;\r
+import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
+import jp.nyatla.nyartoolkit.core.types.NyARIntSize;\r
+import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;\r
+import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARReality;\r
+import jp.nyatla.nyartoolkit.dev.rpf.realitysource.nyartk.NyARRealitySource;\r
+import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
+import jp.nyatla.nyartoolkit.jogl.utils.NyARGLUtil;\r
+\r
+/**\r
+ * OpenGLに特化したNyARRealityクラスです。\r
+ * @author nyatla\r
+ */\r
+public class NyARRealityGl extends NyARReality\r
+{\r
+ private double[] _gl_frustum_rh=new double[16];\r
+ /**\r
+ * ARToolKitスタイルのModelView行列を、OpenGLスタイルのモデルビュー行列に変換します。\r
+ * @param i_ny_style_mat\r
+ * @param o_gl_style_mat\r
+ */\r
+ public static void toGLViewMat(NyARDoubleMatrix44 i_ny_style_mat,double[] o_gl_style_mat)\r
+ {\r
+ NyARGLUtil.toCameraViewRH(i_ny_style_mat, 1, o_gl_style_mat);\r
+ }\r
+ \r
+ public NyARRealityGl(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target) throws NyARException\r
+ {\r
+ super(i_param,i_near,i_far,i_max_known_target,i_max_unknown_target);\r
+ }\r
+ /**\r
+ * 透視投影行列と視錐体パラメータを元に、インスタンスを作成します。\r
+ * この関数は、樽型歪み矯正を外部で行うときに使います。\r
+ * @param i_prjmat\r
+ * ARToolKitスタイルのカメラパラメータです。通常は{@link NyARParam#getPerspectiveProjectionMatrix()}から得られた値を使います。\r
+ * @param i_screen_size\r
+ * スクリーン(入力画像)のサイズです。通常は{@link NyARParam#getScreenSize()}から得られた値を使います。\r
+ * @param i_near\r
+ * 視錐体のnear-pointをmm単位で指定します。\r
+ * default値は{@link #FRASTRAM_ARTK_NEAR}です。\r
+ * @param i_far\r
+ * 視錐体のfar-pointをmm単位で指定します。\r
+ * default値は{@link #FRASTRAM_ARTK_FAR}です。\r
+ * @param i_max_known_target\r
+ * @param i_max_unknown_target\r
+ * @throws NyARException\r
+ */\r
+ public NyARRealityGl(NyARPerspectiveProjectionMatrix i_prjmat,NyARIntSize i_screen_size,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target) throws NyARException\r
+ {\r
+ super(i_screen_size,i_near,i_far,i_prjmat,null,i_max_known_target,i_max_unknown_target);\r
+ //カメラパラメータを取得しておく。\r
+ this._frustum.refMatrix().getValueT(this._gl_frustum_rh);\r
+ }\r
+ \r
+ private double[] _temp=new double[16];\r
+ /**\r
+ * NyARToolKitの姿勢変換行列をOpenGLスタックへロードします。\r
+ * @throws NyARException \r
+ */\r
+ public void glLoadModelViewMatrix(GL i_gl,NyARDoubleMatrix44 i_mat) throws NyARException\r
+ {\r
+ NyARGLUtil.toCameraViewRH(i_mat,1,this._temp);\r
+ i_gl.glLoadMatrixd(this._temp,0);\r
+ return;\r
+ }\r
+ \r
+ /**\r
+ * projection行列をOpenGLの行列スタックへロードします。\r
+ */\r
+ public void glLoadCameraFrustum(GL i_gl)\r
+ {\r
+ i_gl.glLoadMatrixd(this._gl_frustum_rh,0);\r
+ return;\r
+ }\r
+ /**\r
+ * 現在のViewPortに、i_rtsourceの内容を描画します。\r
+ * @param i_gl\r
+ * OpenGLインスタンスを指定します。\r
+ * @param i_raster\r
+ * @throws NyARException\r
+ */\r
+ public void glDrawRealitySource(GL i_gl,NyARRealitySource i_rtsource) throws NyARException\r
+ {\r
+ NyARGLDrawUtil.drawBackGround(i_gl,i_rtsource.refRgbSource(),1.0);\r
+ return;\r
+ }\r
+}
\ No newline at end of file