ページ

2014年10月7日火曜日

Cent OSでOpenGL 9 - マテリアル -

材質の設定

またまたいつものURL
http://seesaawiki.jp/w/mikk_ni3_92/d/%BA%E0%BC%C1%A4%CE%C0%DF%C4%EA

どうやら材質特性によって反射の仕方が変わるらしい。
「glMaterial()関数」を使用。

例)金属のような質感





















↓ソースコード
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

GLfloat gold_amb[] = { 0.24725, 0.1995, 0.0745, 1.0 };
        GLfloat gold_diff[] = { 0.75164, 0.60648 , 0.22648, 1.0 };
        GLfloat gold_spe[] = { 0.628281, 0.555802,0.366065,1.0 };
        GLfloat gold_shin[] = { 51.2 };

        glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, gold_amb);
        glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, gold_diff);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, gold_spe);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, gold_shin);

glBegin(GL_POLYGON);


↓材質のパラメータ
パラメータ名内容初期値
GL_AMBIENT環境光(0.2, 0.2, 0.2, 1)
GL_DIFFUSE拡散光GL_LIGHT=(0.8, 0.8, 0.8, 1)
GL_SPECULAR鏡面光(0,0,0,1)
GL_EMISSION放射輝度(0,0,0,1)
GL_SHININESS鏡面光の指数0。0~128までできる
GL_AMBIENT_AND_DIFFUSE「環境光」、「拡散光」を同時に指定する
GL_COLOR_INDEXES「環境光」、「拡散光」、「鏡面光」のカラー座標

※ GL_FRONT_AND_BACKは面の裏、表両方に適用させる時に指定する。
    GL_FROMT だと表面のみ、GL_BACKだと裏面のみに材質を設定できる。


0 件のコメント:

コメントを投稿