kGLModel
クラス KGLAntiAlias

java.lang.Object
  上位を拡張 kGLModel.KGLAntiAlias

public class KGLAntiAlias
extends java.lang.Object

アンチエイリアスを行うクラス
処理の流れ

 ・準備
 1)描画する画面のアキュムレーションバッファを有効にする。
                (GLCanvasまたはGLJPanelを作成するとき以下の用にする)
                GLCanvas canvas = new GLCanvas(KGLAntiAlias.accumOn(new GLCapabilities()));
 2)KGLAntiAliasを作成
                antialias = new KGLAntiAlias(GLクラス) ;
 ・実際の描画処理(GLEventListener→void display(GLAutoDrawable))の中で)
 3)描画前処理
                antialias.start(0.5f)
                ↑引数の数字を変えるとアンチエイリアスのかかり具合が変わるので、好きな数字を入れてください
 4)描画ループ作成(ループの中に描画処理を入れる)
                for( int c = 0 ; c < antialias.getJitterCount() ; c++ ) {
                        antialias.jitter(c) ; ←視点ぶらし
                        描画処理
                        antialias.add() ; ←アキュムレーションバッファに追加
                }
 5)アキュムレーションバッファの内容をカラーバッファにもどす
                GL.glClear(GL.GL_COLOR_BUFFER_BIT); 
                antialias.flush() ;
 

☆注意!!PROJECTION行列をいじっているわけですが、理論的な裏付けがあるわけではありません。
強いて言えば、glFrustumがprojection行列を作るときの配列が
配列
| A 0 C 0 |
| 0 B D 0 |
| 0 0 E F |
| 0 0 -1 0 |
A=2/(right-left)
B=2/(top-bottom)
C=−(right+left)/(right-left)
D=−(top+bottom)/(top-bottom)
E=−(far+near)/(far-near)
F=−(2farnear)/(far-near)
らしい。。。ということだけです。

作成者:
kei

コンストラクタの概要
KGLAntiAlias(javax.media.opengl.GL in_gl)
          コンストラクタ
 
メソッドの概要
static javax.media.opengl.GLCapabilities accumOn(javax.media.opengl.GLCapabilities caps)
          アキュムレーションバッファのビットをセットする。
 void add()
          アキュムレーションバッファへ追加
倍率は1/ぶらす回数
 void flush()
          カラーバッファへ書き込み
アキュムレーションバッファの内容をカラーバッファへ戻す
 int getJitterCount()
          ぶらす回数を取り出す。
 void jitter(int count)
          視点ぶらし実行
 void start(float baseMagnification)
          アンチエイリアスの開始処理
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

KGLAntiAlias

public KGLAntiAlias(javax.media.opengl.GL in_gl)
コンストラクタ

パラメータ:
in_gl - OpenGLコマンド群をカプセル化したクラス
メソッドの詳細

accumOn

public static javax.media.opengl.GLCapabilities accumOn(javax.media.opengl.GLCapabilities caps)
アキュムレーションバッファのビットをセットする。
☆このメソッドの戻り値をGLCanvas又はGLJPanelのコンストラクタの引数とする

パラメータ:
caps - 追加元のGLCapabilities
戻り値:
accumバッファの設定をしたGLCapabilities

start

public void start(float baseMagnification)
アンチエイリアスの開始処理

パラメータ:
baseMagnification - 視点をぶらす幅の調整倍率

add

public void add()
アキュムレーションバッファへ追加
倍率は1/ぶらす回数


flush

public void flush()
カラーバッファへ書き込み
アキュムレーションバッファの内容をカラーバッファへ戻す


getJitterCount

public int getJitterCount()
ぶらす回数を取り出す。
この回数分、描画をくりかえさないといけない。

戻り値:
ぶらす回数

jitter

public void jitter(int count)
視点ぶらし実行

パラメータ:
count - 描画回数(何回目か)