Japanese | English | Korean

Samples


描画できるプリミティブは以下のものがあります。

プリミティブ 説明
1ピクセルで描画される点
プリミティブ単位で色を指定できる
ブレンド処理方法(ブレンドなし、半透明、加算、減算)を属性として選択できる
ライン 2点を直線で結んだ幅1ピクセルのライン
プリミティブ単位で色を指定できる
ブレンド処理方法を属性として選択できる
三角ポリゴン 3点を指定することで描画される三角ポリゴン
  • カラーポリゴンかテクスチャポリゴンか
  • 頂点単位の法線かプリミティブ単位の法線か
  • ブレンド処理方法
  • 光源処理を施すか
  • スフィアマップを施すか
といったポリゴン属性を選択できる
四角ポリゴン 4点を指定することで描画される四角ポリゴン
選択できるポリゴン属性は三角ポリゴンと同様
ポイントスプライト 表示座標を指定し、常に視点方向を向いた四角ポリゴンを描画する
ブレンド処理方法を指定できる

サンプル実行画面


1. 各種プリミティブ

ここでは MascotCapsule V3 で描画できる各プリミティブについて説明します。

1.1. 点

3次元座標を指定して点を描画します。描画される点はスクリーンの設定によらず、1ピクセルで表現されます。
点を描画する際には、以下のパラメータが必要です。

  • 点を描画する3次元座標(モデル座標系)
  • 点の色
  • 点の属性とデータタイプ

1.2. ライン

3次元座標で示される2点間を結ぶラインを描画します。描画されるラインの幅はスクリーンの設定によらず、1ピクセルで表現されます。
ラインを描画する際には、以下のパラメータが必要です。

  • ラインの両端の3次元座標(モデル座標系)
  • ラインの色
  • ラインの属性とデータタイプ

1.3. 三角ポリゴン

3次元座標で示される 3点で構成される三角ポリゴンを描画します。三角ポリゴンにはテクスチャを貼り付けるテクスチャポリゴンと、色を指定し、単色で描画されるカラーポリゴンがあります。
三角ポリゴンを描画する際には、以下のパラメータが必要です。

  • 三角ポリゴンを構成する 3点の3次元座標(モデル座標系)
  • 三角ポリゴンの法線
  • 三角ポリゴンに貼り付けるテクスチャ座標(テクスチャポリゴンの場合)
  • 三角ポリゴンの色(カラーポリゴンの場合)
  • 三角ポリゴンの属性とデータタイプ

1.4. 四角ポリゴン

3次元座標で示される 4点で構成される四角ポリゴンを描画します。三角ポリゴン同様、四角ポリゴンもテクスチャポリゴンとカラーポリゴンがあります。
四角ポリゴンを描画する際には、以下のパラメータが必要です。

  • 四角ポリゴンを構成する4点の3次元座標(モデル座標系)
  • 四角ポリゴンの法線
  • 四角ポリゴンに貼り付けるテクスチャ座標(テクスチャポリゴンの場合)
  • 四角ポリゴンの色(カラーポリゴンの場合)
  • 四角ポリゴンの属性とデータタイプ

1.5. ポイントスプライト

3次元座標で示される1点を中心とした、視点に対し常に正面を向く四角ポリゴンを描画します。
ポイントスプライトを描画する際には、以下のパラメータが必要です。

  • ポイントスプライトの表示位置を示す 1つの3次元座標(モデル座標系)
  • ポイントスプライトに貼り付ける テクスチャ座標
  • ポイントスプライトのサイズとアングル
  • ポイントスプライトの表示フラグ
  • ポイントスプライトの属性とデータタイプ

なお、MascotCapsule V3 におけるポイントスプライトは、表示の際、以下のフラグを指定して表示方法を決定します。

フラグ 説明
POINT_SPRITE_LOCAL_SIZE モデル座標系におけるサイズを指定します
POINT_SPRITE_PIXEL_SIZE スクリーン座標系におけるサイズを指定します
POINT_SPRITE_PERSPECTIVE 透視投影においてパースを有効にします
POINT_SPRITE_NO_PERS 透視投影においてパースを無効にします

これらのフラグを論理和で表示方式として指定します。
ただし、POINT_SPRITE_LOCAL_SIZE と POINT_SPRITE_PIXEL_SIZE、および POINT_SPRITE_PERSPECTIVE と POINT_SPRITE_NO_PERS はそれぞれ排他的な関係にあります。




2. プリミティブ描画

Graphics3D.renderPrimitives() メソッドを使用することにより、複数のプリミティブを一括して描画登録することが可能です。描画登録後、Graphics3D.flush() メソッドを呼び出すことにより、実際の描画が行われます。なおこのとき、一度に登録できるのは同じ属性を持つ、同じプリミティブのみです。異なるプリミティブ、あるいは同じプリミティブでも異なる属性を持つ場合には別々に描画登録を行う必要があります。

(例) 同じプリミティブで異なる属性を持つ場合
       法線をプリミティブ単位で持つ三角ポリゴンと頂点単位で持つ三角ポリゴン等

Graphics3D.renderPrimitives() は引数として以下のものを指定する必要があります。

  • 描画位置の座標
  • プリミティブの種類と属性、データタイプ
  • プリミティブの数
  • プリミティブを描画する際に使用する頂点配列
  • プリミティブを描画する際に使用する法線配列
  • プリミティブを描画する際に使用するテクスチャ位置情報配列
  • プリミティブを描画する際に使用する色情報配列

このとき、頂点配列・法線配列・テクスチャ位置情報配列・色情報配列のいずれかの配列に、使用しないものが存在する場合も何らかの配列を指定するようにしてください。 また、テクスチャを用いる場合には Texture オブジェクトを指定する必要があります。

以下に各引数の説明を行います。

2.1. プリミティブの種類、属性、データタイプ

これらの引数の指定方法は以下の通りです。

プリミティブの種類 | プリミティブの属性 | プリミティブのデータタイプ

というように各項目の論理和を指定します。

private int triangles; // 三角ポリゴン情報

/* 三角ポリゴン */
triangles = Graphics3D.PRIMITVE_TRIANGLES |
   Graphics3D.PDATA_NORMAL_PER_FACE |
   Graphics3D.PDATA_COLOR_PER_FACE | Graphics3D.PATTR_LIGHTING;

属性、およびデータタイプは必要なものを連記することができます。



プリミティブの種類は以下の宣言から指定します。

プリミティブ 宣言
PRIMITVE_POINTS
ライン PRIMITVE_LINES
三角ポリゴン PRIMITVE_TRIANGLES
四角ポリゴン PRIMITVE_QUADS
ポイントスプライト PRIMITVE_POINT_SPRITES

プリミティブの指定は一回の描画登録につき、必ず一種類だけです。



属性に関しては以下の宣言の中から指定します。

宣言 説明
PATTR_LIGHTING プリミティブは光源処理の対象となります
点、ライン、ポイントスプライトでは無効です
PATTR_SPHERE_MAP プリミティブはスフィアマップ処理の対象となります
点、ライン、ポイントスプライトでは無効です
PATTR_COLORKEY プリミティブはカラーキーによる透過処理の対象となります
点、ラインでは無効です
PATTR_BLEND_NORM ブレンド処理を行いません
PATTR_BLEND_HALF 半透明処理を行います
PATTR_BLEND_ADD 加算処理を行います
PATTR_BLEND_SUB 減算処理を行います

属性の設定は必要なものを論理和で追加してください。ただし、プリミティブによっては受け付けない属性もあります。
また、光源、スフィアマップ、カラーキー、ブレンド処理等については、下記 MIDP + MascotCapsule V3 API サンプルも合わせてご覧ください。



データタイプに関しては以下の宣言から指定します。

宣言 説明
PDATA_NORAML_PER_FACE プリミティブ単位で法線を持ちます
点、ライン、ポイントスプライトでは無効です
PDATA_NORMAL_PER_VERTEX 頂点単位で法線を持ちます
点、ライン、ポイントスプライトでは無効です
PDATA_COLOR_PER_COMMAND コマンド共通の色情報を持ちます
ポイントスプライトでは無効です
点、ラインではこれか PDATA_COLOR_PER_FACE を必ず指定してください
PDATA_COLOR_PER_FACE プリミティブ単位で色情報を持ちます
ポイントスプライトでは無効です
点、ラインではこれか PDATA_COLOR_PER_COMMAND を必ず指定してください
PDATA_TEXURE_COORD テクスチャ位置情報を持ちます
点、ラインでは無効です
PDATA_POINT_SPRITE_PARAMS_PER_CMD ポイントスプライトに共通のテクスチャ位置情報を持ちます
ポイントスプライトでのみ有効です
ポイントスプライトではこれか PDATA_POINT_SPRITE_PARAMS_PER_FACE
あるいは PDATA_POINT_SPRITE_PARAMS_PER_VERTEX を必ず指定してください
PDATA_POINT_SPRITE_PARAMS_PER_FACE プリミティブ毎にポイントスプライトのテクスチャ位置情報を持ちます (*)
ポイントスプライトでのみ有効です
ポイントスプライトではこれか PDATA_POINT_SPRITE_PARAMS_PER_CMD
あるいは PDATA_POINT_SPRITE_PARAMS_PER_VERTEX を必ず指定してください
PDATA_POINT_SPRITE_PARAMS_PER_VERTEX 頂点ごとにポイントスプライトのテクスチャ位置情報を持ちます (*)
ポイントスプライトでのみ有効です
ポイントスプライトではこれか PDATA_POINT_SPRITE_PARAMS_PER_CMD
あるいは PDATA_POINT_SPRITE_PARAMS_PER_FACE を必ず指定してください
PDATA_NORMAL_NONE 法線情報を持ちません
PDATA_COLOR_NONE 色情報を持ちません
PDATA_TEXURE_COORD_NONE テクスチャ位置情報を持ちません

(*) PDATA_POINT_SPRITE_PARAMS_PER_FACE と PDATA_POINT_SPRITE_PARAMS_PER_VERTEX は処理としては同じ効果が得られます。両者の違いは、プログラム上の使用方法の相違になります。

データタイプの設定も属性等同様、必要なものを論理和で追記してください。プリミティブによっては受け付けないデータタイプ、または必須のデータタイプがあります。

ポイントスプライトで PDATA_POINT_SPRITE_PARAMS_PER_CMD を指定した場合、テクスチャ位置情報( = ポイントスプライトのパラメータ)を使いまわすことができます。
同様に、PDATA_COLOR_PER_COMMAND が指定されたときは、色情報を使いまわすことが可能です。

2.2. 頂点配列

頂点配列の指定には int 型の配列を使用します。
プリミティブの種類によって必要な頂点数は異なりますので、適切な数の頂点を設定してください。

private int[] trVertex = new int[18]; // 三角ポリゴン頂点配列

/* 頂点情報 */
/* 1つめ */
trVertex [ 0 ] = 0;
trVertex [ 1 ] = 256;
trVertex [ 2 ] = 0;
trVertex [ 3 ] = -128;
trVertex [ 4 ] = 0;
trVertex [ 5 ] = 0;
trVertex [ 6 ] = 128;
trVertex [ 7 ] = 0;
trVertex [ 8 ] = 0;
/* 2つめ */
trVertex [ 9 ] = 0;
trVertex [ 10 ] = -256;
trVertex [ 11 ] = 0;
trVertex [ 12 ] = -128;
trVertex [ 13 ] = 0;
trVertex [ 14 ] = 0;
trVertex [ 15 ] = 128;
trVertex [ 16 ] = 0;
trVertex [ 17 ] = 0;
プリミティブ 必要な頂点数
プリミティブ数×1
ライン プリミティブ数×2
三角ポリゴン プリミティブ数×3
四角ポリゴン プリミティブ数×4
ポイントスプライト プリミティブ数×1

実際には各頂点は ( x, y, z ) の三要素から成り立ちますので、配列そのものの大きさは頂点数×3 となります。頂点の三要素の格納順は x, y, z の順です。

2.3. 法線配列

法線配列の指定には int 型の配列を使用します。プリミティブの種類、および、データタイプによって必要な法線数は異なりますので、適切な数の法線を設定してください。

private int [] trNormal = new int [ 6 ] ; // 三角ポリゴン法線情報配列

/* 法線情報 */
/* 1つめ */
trNormal [ 0 ] = 0;
trNormal [ 1 ] = 0;
trNormal [ 2 ] = 4096;
/* 2つめ */
trNormal [ 3 ] = 0;
trNormal [ 4 ] = 0;
trNormal [ 5 ] = 4096;
プリミティブ データタイプ 必要な法線数
- - - 0
ライン - - - 0
三角ポリゴン PDATA_NORMAL_NONE 0
PDATA_NORMAL_PER_FACE プリミティブ数×1
PDATA_NORMAL_PER_VERTEX プリミティブ数×3
四角ポリゴン PDATA_NORMAL_NONE 0
PDATA_NORMAL_PER_FACE プリミティブ数×1
PDATA_NORMAL_PER_VERTEX プリミティブ数×4
ポイントスプライト - - - 0

実際には各法線は ( x, y, z ) の三要素から成り立ちますので、配列そのものの大きさは法線数×3 となります。法線の三要素の格納順は x, y, z の順です。
また、法線は正規化されている必要があります。MascotCapsule での正規化は長さが 4096 の状態を言います。

2.4. テクスチャ位置情報配列

テクスチャ位置情報配列の指定には int 型の配列を使用します。プリミティブの種類、および、データタイプによって必要なテクスチャ位置情報の数は異なりますので、適切な数のテクスチャ位置情報を設定してください。

private int [] qdTexCoord = new int [ 8 ] ; // 四角ポリゴンテクスチャ位置情報配列

/* テクスチャ位置情報 */
qdTexCoord [ 0 ] = 255;
qdTexCoord [ 1 ] = 255;
qdTexCoord [ 2 ] = 0;
qdTexCoord [ 3 ] = 255;
qdTexCoord [ 4 ] = 0;
qdTexCoord [ 5 ] = 0;
qdTexCoord [ 6 ] = 255;
qdTexCoord [ 7 ] = 0;
プリミティブ データタイプ 必要なテクスチャ位置情報の数
- - - 0
ライン - - - 0
三角ポリゴン PDATA_COLOR_PER_FACE または PDATA_COLOR_PER_COMMAND 0
PDATA_TEXURE_COORD プリミティブ数×3
四角ポリゴン PDATA_COLOR_PER_FACE または PDATA_COLOR_PER_COMMAND 0
PDATA_TEXURE_COORD プリミティブ数×4
ポイントスプライト PDATA_POINT_SPRITE_PARAMS_PER_CMD 1 (*)
PDATA_POINT_SPRITE_PARAMS_PER_FACE プリミティブ数×1 (*)
PDATA_POINT_SPRITE_PARAMS_PER_VERTEX 頂点数×1 (*)

三角ポリゴン、および四角ポリゴンの頂点情報はテクスチャ上の2次元座標 ( x, y ) ですので、配列そのものの大きさはテクスチャ位置情報の数×2 となります。また、三角ポリゴン、および四角ポリゴンの頂点情報で設定された座標と、テクスチャ位置情報で設定された座標は設定された順番に応じて対応付けがなされます。


(*) ポイントスプライトの場合、ポイントスプライトの各パラメータもここに含まれます。 ポイントスプライトに必要なパラメータは、

  • ポイントスプライトの幅
  • ポイントスプライトの高さ
  • ポイントスプライトのアングル( 360度 = 4096 )
  • ポイントスプライトの左上に相当するテクスチャ位置情報 ( x, y )
  • ポイントスプライトの右下に相当するテクスチャ位置情報 ( x, y )
  • ポイントスプライトの表示フラグ

以上のものがあり、配列そのものの大きさはプリミティブ数×8 となります。

2.5. 色情報配列

色情報配列の指定には int 型の配列を使用します。プリミティブの種類、および、データタイプによって必要な法線数は異なりますので、適切な数の色情報を設定してください。

private int [] trColor = new int [ 2 ] ; // 三角ポリゴン色情報配列

/* 色情報 */
/* 1つめ */
trColor[0] = ( ( 255 << 16 ) | ( 0 << 8 ) | ( 0 ) );
/* 2つめ */
trColor[1] = ( ( 0 << 16 ) | ( 255 << 8 ) | ( 0 ) );
プリミティブ データタイプ 必要な色情報の数
PDATA_COLOR_PER_COMMAND 1
PDATA_COLOR_PER_FACE プリミティブ数×1
ライン PDATA_COLOR_PER_COMMAND 1
PDATA_COLOR_PER_FACE プリミティブ数×1
三角ポリゴン PDATA_COLOR_NONE 0
PDATA_COLOR_PER_COMMAND 1
PDATA_COLOR_PER_FACE プリミティブ数×1
四角ポリゴン PDATA_COLOR_NONE 0
PDATA_COLOR_PER_COMMAND 2
PDATA_COLOR_PER_FACE プリミティブ数×1
ポイントスプライト - - - 0

色情報は RGB で各要素が 8bit の 24bit 形式で指定します。これは、実際の環境のピクセル情報に左右されることがありません。

( R 要素 << 16 ) | ( G << 8 ) | ( B )

したがって、配列そのものの大きさは必要な色情報の数×1 となります。




3. プリミティブ描画のサンプルコード

ここではサンプルコード内のプリミティブ描画に関する部分について説明します。ここでは 「1. 各種プリミティブ」 「2. プリミティブ描画」で使用した、三角ポリゴンの描画を例にとって説明します。

/* 三角ポリゴン */
private int triangles;                               // 三角ポリゴン情報
private int [] trVertex = new int [ 18 ] ;     // 三角ポリゴン頂点配列
private int [] trNormal = new int [ 6 ] ;      // 三角ポリゴン法線情報配列
private int [] trColor = new int [ 2 ] ;        // 三角ポリゴン色情報配列
private int [] trTexCoord = new int [ 1 ] ;  // 三角ポリゴンテクスチャ位置情報配列

/* 三角ポリゴン */
triangles = Graphics3D.PRIMITVE_TRIANGLES |
Graphics3D.PDATA_NORMAL_PER_FACE |
Graphics3D.PDATA_COLOR_PER_FACE | Graphics3D.PATTR_LIGHTING;

/* 頂点情報 */
/* 1つめ */
trVertex [ 0 ] = 0;
trVertex [ 1 ] = 256;
trVertex [ 2 ] = 0;
trVertex [ 3 ] = -128;
trVertex [ 4 ] = 0;
trVertex [ 5 ] = 0;
trVertex [ 6 ] = 128;
trVertex [ 7 ] = 0;
trVertex [ 8 ] = 0;
/* 2つめ */
trVertex [ 9 ] = 0;
trVertex [ 10 ] = -256;
trVertex [ 11 ] = 0;
trVertex [ 12 ] = -128;
trVertex [ 13 ] = 0;
trVertex [ 14 ] = 0;
trVertex [ 15 ] = 128;
trVertex [ 16 ] = 0;
trVertex [ 17 ] = 0;

/* 法線情報 */
/* 1つめ */
trNormal [ 0 ] = 0;
trNormal [ 1 ] = 0;
trNormal [ 2 ] = 4096;
/* 2つめ */
trNormal [ 3 ] = 0;
trNormal [ 4 ] = 0;
trNormal [ 5 ] = 4096;

/* 色情報 */
/* 1つめ */
trColor [ 0 ] = ( ( 255 << 16 ) | ( 0 << 8 ) | ( 0 ) );
/* 2つめ */
trColor [ 1 ] = ( ( 0 << 16 ) | ( 255 << 8 ) | ( 0 ) );

/* テクスチャ位置情報
  * ここでは null と同義
  */
trTexCoord [ 0 ] = 0;

描画登録のため Graphics クラスへの登録を行い、描画します。

/* 変換行列 */
trans.multiply( xTrans, yTrans );
trans.multiply( vTrans, trans );

/* 座標変換関係設定 */
layout.setAffineTrans( trans );

/* レンダリング */
g3d.renderPrimitives( null, 0, 0, layout, effect,
triangles, 2, trVertex, trNormal, trTexCoord, trColor );
g3d.flush();

他のプリミティブも同様に設定します。

ライン

/* ライン */
private int lines;                                        // ライン情報
private int [] lnVertex = new int [ 6 ] ;          // ライン頂点配列
private int [] lnNormal = new int [ 1 ] ;          // ライン法線情報配列
private int [] lnColor = new int [ 1 ] ;            // ライン色情報配列
private int [] lnTexCoord = new int [ 1 ] ;      // ラインテクスチャ位置情報配列

/* ライン */
lines = Graphics3D.PRIMITVE_LINES |
Graphics3D.PDATA_COLOR_PER_FACE |
Graphics3D.PATTR_LIGHTING;
/* 頂点情報 */
lnVertex [ 0 ] = 428;
lnVertex [ 1 ] = 256;
lnVertex [ 2 ] = 0;
lnVertex [ 3 ] = 428;
lnVertex [ 4 ] = -256;
lnVertex [ 5 ] = 0;

/* 法線情報
  * ここでは null と同義
  */
lnNormal [ 0 ] = 0;

/* 色情報 */
lnColor [ 0 ] = ( ( 255 << 16 ) | ( 0 << 8 ) | ( 0 ) );

/* テクスチャ位置情報
  * ここでは null と同義
  */
lnTexCoord [ 0 ] = 0;

g3d.renderPrimitives( null, 0, 0, layout, effect,
lines, 1, lnVertex, lnNormal, lnTexCoord, lnColor );
g3d.flush();

ポイントスプライト

private Texture texture; // プリミティブ用画像データ

/* ポイントスプライト */
private int pointSprites;                             // ポイントスプライト用情報
private int [] psVertex = new int [ 3 ];          // ポイントスプライト頂点配列
private int [] psNormal = new int [ 1 ];         // ポイントスプライト法線情報配列
private int [] psColor = new int [ 1 ];           // ポイントスプライト色情報配列
private int [] psTexCoord = new int [ 8 ];     // ポイントスプライトテクスチャ位置情報配列

try{
texture = new Texture( "/texture.bmp", true );
} catch( IOException e ) {
e.printStackTrace();
}

/* ポイントスプライト */
pointSprites = Graphics3D.PRIMITVE_POINT_SPRITES |
Graphics3D.PDATA_POINT_SPRITE_PARAMS_PER_FACE |
Graphics3D.PDATA_TEXURE_COORD | Graphics3D.PATTR_LIGHTING;

/* 頂点情報 */
psVertex [ 0 ] = -428;
psVertex [ 1 ] = 128;
psVertex [ 2 ] = 0;

/* 法線情報
  * ここでは null と同義
  */
psNormal [ 0 ] = 0;

/* 色情報
  * ここでは null と同義
  */
psColor [ 0 ] = 0;

/* テクスチャ位置情報 */
psTexCoord [ 0 ] = 256;
psTexCoord [ 1 ] = 256;
psTexCoord [ 2 ] = 0;
psTexCoord [ 3 ] = 0;
psTexCoord [ 4 ] = 0;
psTexCoord [ 5 ] = 255;
psTexCoord [ 6 ] = 255;
psTexCoord [ 7 ] = Graphics3D.POINT_SPRITE_LOCAL_SIZE | Graphics3D.POINT_SPRITE_PERSPECTIVE;

g3d.renderPrimitives( texture, 0, 0, layout, effect,
pointSprites, 1, psVertex, psNormal, psTexCoord, psColor );

g3d.flush();

四角ポリゴン (*テクスチャデータはポイントスプライトと共有しています。)

/* 四角ポリゴン */
private int quads;                                     // 四角ポリゴン用情報
private int [] qdVertex = new int [ 12 ];       // 四角ポリゴン頂点配列
private int [] qdNormal = new int [ 3 ];        // 四角ポリゴン法線情報配列
private int [] qdColor = new int [ 1 ];          // 四角ポリゴン色情報配列
private int [] qdTexCoord = new int [ 8 ];    // 四角ポリゴンテクスチャ位置情報配列

/* 四角ポリゴン */
quads = Graphics3D.PRIMITVE_QUADS |
Graphics3D.PDATA_COLOR_NONE | Graphics3D.PDATA_NORMAL_PER_FACE |
Graphics3D.PDATA_TEXURE_COORD | Graphics3D.PATTR_LIGHTING;

/* 頂点情報 */
qdVertex [ 0 ] = -300;
qdVertex [ 1 ] = 0;
qdVertex [ 2 ] = 0;
qdVertex [ 3 ] = -556;
qdVertex [ 4 ] = 0;
qdVertex [ 5 ] = 0;
qdVertex [ 6 ] = -556;
qdVertex [ 7 ] = -256;
qdVertex [ 8 ] = 0;
qdVertex [ 9 ] = -300;
qdVertex [ 10 ] = -256;
qdVertex [ 11 ] = 0;

/* 法線情報 */
qdNormal [ 0 ] = 0;
qdNormal [ 1 ] = 0;
qdNormal [ 2 ] = 4096;

/* 色情報配列
  * ここでは null と同義
  */
qdColor [ 0 ] = 0;

/* テクスチャ位置情報 */
qdTexCoord [ 0 ] = 255;
qdTexCoord [ 1 ] = 255;
qdTexCoord [ 2 ] = 0;
qdTexCoord [ 3 ] = 255;
qdTexCoord [ 4 ] = 0;
qdTexCoord [ 5 ] = 0;
qdTexCoord [ 6 ] = 255;
qdTexCoord [ 7 ] = 0;

g3d.renderPrimitives( texture, 0, 0, layout, effect,
quads, 1, qdVertex, qdNormal, qdTexCoord, qdColor );

g3d.flush();

サンプル実行画面 (法線設定と裏面表示の比較)


法線有効時の表面(左)と 裏面(右)


法線無効時の表面(左)と 裏面(右)