Springhead
An open source physics engine for virtual reality, haptics and motion generation.
構造体 GRRenderBaseIf

グラフィックスレンダラーのインタフェース(ユーザインタフェース)

#include <SprGRRender.h>

GRRenderBaseIfに対する継承グラフ

Public 型

enum  TPrimitiveType {
  POINTS, LINES, LINE_STRIP, LINE_LOOP,
  TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN, QUADS
}
 プリミティブの種類
 
enum  TMaterialSample {
  INDIANRED, LIGHTCORAL, SALMON, DARKSALMON,
  LIGHTSALMON, RED, CRIMSON, FIREBRICK,
  DARKRED, PINK, LIGHTPINK, HOTPINK,
  DEEPPINK, MEDIUMVIOLETRED, PALEVIOLETRED, CORAL,
  TOMATO, ORANGERED, DARKORANGE, ORANGE,
  GOLD, YELLOW, LIGHTYELLOW, LEMONCHIFFON,
  LIGHTGOLDENRODYELLOW, PAPAYAWHIP, MOCCASIN, PEACHPUFF,
  PALEGOLDENROD, KHAKI, DARKKHAKI, LAVENDER,
  THISTLE, PLUM, VIOLET, ORCHILD,
  FUCHSIA, MAGENTA, MEDIUMORCHILD, MEDIUMPURPLE,
  BLUEVIOLET, DARKVIOLET, DARKORCHILD, DARKMAGENTA,
  PURPLE, INDIGO, DARKSLATEBLUE, SLATEBLUE,
  MEDIUMSLATEBLUE, GREENYELLOW, CHARTREUSE, LAWNGREEN,
  LIME, LIMEGREEN, PALEGREEN, LIGHTGREEN,
  MEDIUMSPRINGGREEN, SPRINGGREEN, MEDIUMSEAGREEN, SEAGREEN,
  FORESTGREEN, GREEN, DARKGREEN, YELLOWGREEN,
  OLIVEDRAB, OLIVE, DARKOLIVEGREEN, MEDIUMAQUAMARINE,
  DARKSEAGREEN, LIGHTSEAGREEN, DARKCYAN, TEAL,
  AQUA, CYAN, LIGHTCYAN, PALETURQUOISE,
  AQUAMARINE, TURQUOISE, MEDIUMTURQUOISE, DARKTURQUOISE,
  CADETBLUE, STEELBLUE, LIGHTSTEELBLUE, POWDERBLUE,
  LIGHTBLUE, SKYBLUE, LIGHTSKYBLUE, DEEPSKYBLUE,
  DODGERBLUE, CORNFLOWERBLUE, ROYALBLUE, BLUE,
  MEDIUMBLUE, DARKBLUE, NAVY, MIDNIGHTBLUE,
  CORNSILK, BLANCHEDALMOND, BISQUE, NAVAJOWHITE,
  WHEAT, BURLYWOOD, TAN, ROSYBROWN,
  SANDYBROWN, GOLDENROD, DARKGOLDENROD, PERU,
  CHOCOLATE, SADDLEBROWN, SIENNA, BROWN,
  MAROON, WHITE, SNOW, HONEYDEW,
  MINTCREAM, AZURE, ALICEBLUE, GHOSTWHITE,
  WHITESMOKE, SEASHELL, BEIGE, OLDLACE,
  FLORALWHITE, IVORY, ANTIQUEWHITE, LINEN,
  LAVENDERBLUSH, MISTYROSE, GAINSBORO, LIGHTGRAY,
  SILVER, DARKGRAY, GRAY, DIMGRAY,
  LIGHTSLATEGRAY, SLATEGRAY, DARKSLATEGRAY, BLACK,
  MATERIAL_SAMPLE_END
}
 レンダラーで用意してある材質
 
デプスバッファ法に用いる判定条件
enum  TDepthFunc {
  DF_NEVER, DF_LESS, DF_EQUAL, DF_LEQUAL,
  DF_GREATER, DF_NOTEQUAL, DF_GEQUAL, DF_ALWAYS
}
 
アルファブレンディングの混合係数

   SRCがこれから描画される合成させたい色、DESTがすでに描かれたカラーバッファの色
     合成結果 =SRC * SRCのブレンディング係数 + DEST * DESTのブレンディング係数
   ただし、BF_BOTHINVSRCALPHA、BF_BLENDFACTOR、BF_INVBLENDFACTOR に関しては、
   deviceがDirectXのときのみ利用可能。指定してもBF_ZEROとして扱う。

enum  TBlendFunc {
  BF_ZERO, BF_ONE, BF_SRCCOLOR, BF_INVSRCCOLOR,
  BF_SRCALPHA, BF_INVSRCALPHA, BF_DESTALPHA, BF_INVDESTALPHA,
  BF_DESTCOLOR, BF_INVDESTCOLOR, BF_SRCALPHASAT, BF_BOTHINVSRCALPHA,
  BF_BLENDFACTOR, BF_INVBLENDFACTOR
}
 

Public メソッド

 SPR_IFDEF (GRRenderBase)
 
void SetViewport (Vec2f pos, Vec2f sz)
 ビューポートの設定
 
Vec2f GetViewportPos ()
 ビューポートの基点座標の取得
 
Vec2f GetViewportSize ()
 ビューポートのサイズの取得
 
void ClearBuffer (bool color=true, bool depth=true)
 バッファクリア [詳細]
 
void SwapBuffers ()
 バッファの入れ替え(表示)
 
void GetClearColor (Vec4f &color)
 背景色の取得
 
void SetClearColor (const Vec4f &color)
 背景色の設定
 
void BeginScene ()
 レンダリングの開始前に呼ぶ関数
 
void EndScene ()
 レンダリングの終了後に呼ぶ関数
 
void SetViewMatrix (const Affinef &afv)
 カレントの視点行列をafvで置き換える
 
void GetViewMatrix (Affinef &afv)
 カレントの視点行列を取得する
 
void SetProjectionMatrix (const Affinef &afp)
 カレントの投影行列をafpで置き換える
 
void GetProjectionMatrix (Affinef &afp)
 カレントの投影行列を取得する
 
void PushProjectionMatrix ()
 
void PopProjectionMatrix ()
 
void SetModelMatrix (const Affinef &afw)
 カレントのモデル行列をafwで置き換える
 
void GetModelMatrix (Affinef &afw)
 カレントのモデル行列を取得する
 
void MultModelMatrix (const Affinef &afw)
 カレントのモデル行列に対してafwを掛ける
 
void PushModelMatrix ()
 カレントのモデル行列をモデル行列スタックへ保存する
 
void PopModelMatrix ()
 モデル行列スタックから取り出し、カレントのモデル行列とする
 
void ClearBlendMatrix ()
 ブレンド変換行列の全要素を削除する
 
void SetBlendMatrix (const Affinef &afb, unsigned int id=0)
 ブレンド変換行列を設定する
 
void SetVertexFormat (const GRVertexElement *e)
 頂点フォーマットの指定
 
void DrawDirect (GRRenderBaseIf::TPrimitiveType ty, void *vtx, size_t count, size_t stride=0)
 頂点シェーダーの指定 API化候補.引数など要検討 2006.6.7 hase [詳細]
 
void DrawIndexed (GRRenderBaseIf::TPrimitiveType ty, GLuint *idx, void *vtx, size_t count, size_t stride=0)
 頂点とインデックスを指定してプリミティブを描画
 
void DrawArrays (GRRenderBaseIf::TPrimitiveType ty, GRVertexArray *arrays, size_t count)
 頂点の成分ごとの配列を指定して,プリミティブを描画
 
void DrawArrays (GRRenderBaseIf::TPrimitiveType ty, size_t *idx, GRVertexArray *arrays, size_t count)
 インデックスと頂点の成分ごとの配列を指定して,プリミティブを描画
 
void DrawPoint (Vec3f p)
 点を描画
 
void DrawLine (Vec3f p0, Vec3f p1)
 線分を描画
 
void DrawSpline (Vec3f p0, Vec3f v0, Vec3f p1, Vec3f v1, int ndiv=12)
 スプライン曲線を描画 [詳細]
 
void DrawArrow (Vec3f p0, Vec3f p1, float rbar, float rhead, float lhead, int slice, bool solid)
 矢印を描画
 
void DrawBox (float sx, float sy, float sz, bool solid=true)
 直方体を描画
 
void DrawSphere (float radius, int slices, int stacks, bool solid=true)
 球体を描画
 
void DrawEllipsoid (Vec3f radius, int slices, int stacks, bool solid=true)
 楕円体を描画
 
void DrawCone (float radius, float height, int slice, bool solid=true)
 円錐の描画
 
void DrawCylinder (float radius, float height, int slice, bool solid=true, bool cap=true)
 円筒の描画
 
void DrawDisk (float radius, int slice, bool solid=true)
 円板の描画
 
void DrawCapsule (float radius, float height, int slice=20, bool solid=true)
 カプセルの描画
 
void DrawRoundCone (float rbottom, float rtop, float height, int slice=20, bool solid=true)
 球円錐の描画
 
void DrawGrid (float size, int slice, float lineWidth=1.0f)
 グリッドを描画 [詳細]
 
void DrawCurve (const Curve3f &curve)
 曲線を描画 [詳細]
 
int StartList ()
 ディスプレイリストの作成(記録開始)
 
void EndList ()
 ディスプレイリストの終了(記録終了)
 
void DrawList (int i)
 ディスプレイリストの描画
 
void ReleaseList (int i)
 ディスプレイリストの解放
 
void SetFont (const GRFont &font)
 フォントの設定(Windows限定) [詳細]
 
void DrawFont (Vec2f pos, const std::string str)
 2次元テキストの描画
 
void DrawFont (Vec3f pos, const std::string str)
 3次元テキストの描画 [詳細]
 
void SetMaterial (const GRMaterialDesc &mat)
 描画マテリアルの設定(デスクリプタ版)
 
void SetMaterial (const GRMaterialIf *mat)
 描画マテリアルの設定(オブジェクト版)
 
void SetMaterial (int matname)
 描画マテリアルの設定(予約マテリアルの名前で指定)
 
void SetMaterial (int matname, float alpha)
 描画マテリアルの設定(予約マテリアルの名前とアルファ値で指定)
 
void SetPointSize (float sz, bool smooth=false)
 描画する点の大きさの設定 [詳細]
 
void SetLineWidth (float w, bool smooth=false)
 描画する線の太さの設定 [詳細]
 
void PushLight (const GRLightDesc &light)
 光源スタックをPush
 
void PushLight (const GRLightIf *light)
 
void PopLight ()
 光源スタックをPop
 
int NLights ()
 設定されている光源の数
 
void SetDepthWrite (bool b)
 デプスバッファへの書き込みを許可/禁止する
 
void SetDepthTest (bool b)
 デプステストを有効/無効にする
 
void SetDepthFunc (GRRenderBaseIf::TDepthFunc f)
 デプスバッファ法に用いる判定条件を指定する
 
void SetAlphaTest (bool b)
 アルファブレンディングを有効/無効にする
 
void SetAlphaMode (GRRenderBaseIf::TBlendFunc src, GRRenderBaseIf::TBlendFunc dest)
 アルファブレンディングのモード設定(SRCの混合係数, DEST混合係数)
 
void SetLighting (bool l)
 シェーディングON(glMaterial) or OFF(glColor)
 
void SetTexture2D (bool b)
 テクスチャマッピングを有効/無効にする
 
void SetTexture3D (bool b)
 
unsigned int LoadTexture (const std::string filename)
 テクスチャのロード(戻り値:テクスチャID)
 
void SetTextureImage (const std::string id, int components, int xsize, int ysize, int format, const char *tb)
 テクスチャ画像の設定
 
void SetBlending (bool b)
 頂点ブレンディングを有効/無効にする
 
GRShaderIfCreateShader (const GRShaderDesc &sd)
 シェーダの初期化 [詳細]
 
bool SetShader (GRShaderIf *shader)
 シェーダを選択 [詳細]
 
void SetShadowLight (const GRShadowLightDesc &sld)
 シェーダオブジェクトの作成、GRDeviceGL::shaderへの登録(あらかじめShaderFile名を登録しておく必要がある) [詳細]
 
void EnterShadowMapGeneration ()
 シャドウマップ生成パスへ切り替え
 
void LeaveShadowMapGeneration ()
 シャドウマップ生成パスから通常パスへ戻る
 
- Public メソッド inherited from ObjectIf
 SPR_IFDEF (Object)
 
ObjectIfGetObjectIf ()
 
const ObjectIfGetObjectIf () const
 
int DelRef () const
 
void Print (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含む。
 
void PrintShort (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含まない。
 
void DumpObjectR (std::ostream &os, int level=0) const
 オブジェクトツリーのメモリイメージをダンプ
 
int AddRef ()
 
int RefCount ()
 
size_t NChildObject () const
 子オブジェクトの数
 
ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
const ObjectIfGetChildObject (size_t pos) const
 
bool AddChildObject (ObjectIf *o)
 子オブジェクトの追加.複数のオブジェクトの子オブジェクトとして追加してよい. 例えば,GRFrameはツリーを作るが,全ノードがGRSceneの子でもある.
 
bool DelChildObject (ObjectIf *o)
 子オブジェクトの削除
 
void Clear ()
 すべての子オブジェクトの削除と、プロパティのクリア
 
ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトを作成し,AddChildObject()を呼ぶ.
 
template<class T >
ObjectIfCreateObject (const T &desc)
 CreateObjectを呼び出すユーティリティ関数
 
const void * GetDescAddress () const
 デスクリプタの読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetDesc()は実装されていることが多い.
 
bool GetDesc (void *desc) const
 デスクリプタの読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetDescAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetDesc (const void *desc)
 デスクリプタの設定
 
size_t GetDescSize () const
 デスクリプタのサイズ
 
const void * GetStateAddress () const
 状態の読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetState()は実装されていることがある.
 
bool GetState (void *state) const
 状態の読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetStateAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetState (const void *state)
 状態の設定
 
bool WriteStateR (std::ostream &fout)
 状態の書き出し
 
bool WriteState (std::string fileName)
 
bool ReadStateR (std::istream &fin)
 状態の読み込み
 
bool ReadState (std::string fileName)
 
size_t GetStateSize () const
 状態のサイズ
 
void ConstructState (void *m) const
 メモリブロックを状態型に初期化
 
void DestructState (void *m) const
 状態型をメモリブロックに戻す
 

列挙型

enum TBlendFunc
列挙型の値
BF_ZERO 

(0,0,0,0)

BF_ONE 

(1,1,1,1)

BF_SRCCOLOR 

(Rs, Gs, Bs, As)

BF_INVSRCCOLOR 

(1-Rs, 1-Gs, 1-Bs, 1-As)

BF_SRCALPHA 

(As, As, As, As)

BF_INVSRCALPHA 

(1-As, 1-As, 1-As, 1-As)

BF_DESTALPHA 

(Ad, Ad, Ad, Ad)

BF_INVDESTALPHA 

(1-Ad, 1-Ad, 1-Ad, 1-Ad)

BF_DESTCOLOR 

(Rd, Gd, Bd, Ad)

BF_INVDESTCOLOR 

(1-Rd, 1-Gd, 1-Bd, 1-Ad)

BF_SRCALPHASAT 

(f, f, f, 1)、f = min(As, 1-Ad)

BF_BOTHINVSRCALPHA 

SRCブレンディング係数は(1-As, 1-As, 1-As, 1-As)。DSTブレンディング係数は(As, As, As, As)。

BF_BLENDFACTOR 

フレームバッファ合成時に使われる定数色で合成

BF_INVBLENDFACTOR 

フレームバッファ合成時に使われる定数色を反転した色で合成

enum TDepthFunc
列挙型の値
DF_NEVER 

新しいZ値に関係なく更新しない

DF_LESS 

新しいZ値が小さければ更新する(default)

DF_EQUAL 

新しいZ値が等しければ描かれる

DF_LEQUAL 

新しいZ値が大きくなければ描かれる

DF_GREATER 

新しいZ値が大きければ描かれる

DF_NOTEQUAL 

新しいZ値と等しくなければ描かれる

DF_GEQUAL 

新しいZ値が小さくなければ描かれる

DF_ALWAYS 

新しいZ値に関係なく更新する

関数

void ClearBuffer ( bool  color = true,
bool  depth = true 
)
引数
colorカラーバッファをクリアする
depthデプスバッファをクリアする

参照元 SampleApp::Display().

GRShaderIf* CreateShader ( const GRShaderDesc sd)

シェーダフォーマットの設定 シェーダオブジェクトの作成

void DrawCurve ( const Curve3f curve)
引数
curve曲線
void DrawDirect ( GRRenderBaseIf::TPrimitiveType  ty,
void *  vtx,
size_t  count,
size_t  stride = 0 
)

頂点を指定してプリミティブを描画

void DrawFont ( Vec3f  pos,
const std::string  str 
)
引数
posWorld座標系での書き始めの位置,ビューポートをはみ出すと何も表示されなくなるので注意.
str書く文字列(bitmapfontで書ける物のみ)
void DrawGrid ( float  size,
int  slice,
float  lineWidth = 1.0f 
)
引数
size
slice分割数
lineWidth線の太さ xy面上にグリッドを描画する
void DrawSpline ( Vec3f  p0,
Vec3f  v0,
Vec3f  p1,
Vec3f  v1,
int  ndiv = 12 
)
引数
p0始点
p1終点
v0始点での微係数
v1終点での微係数
ndiv折れ線近似の分割数 スプライン曲線をp(s)とすると, p(0) = p0, p(1) = p1,(d/ds)p(0) = v0, (d/ds)p(1) = v1が成り立つ.
void SetFont ( const GRFont font)
引数
fontフォントに関する設定 Windows環境(VC)でのみfontをサポートし、他の環境ではfontを指定しても利用されない。
void SetLineWidth ( float  w,
bool  smooth = false 
)
引数
w太さ
smoothアンチエイリアシングするか
void SetPointSize ( float  sz,
bool  smooth = false 
)
引数
sz大きさ
smoothアンチエイリアシングするか
bool SetShader ( GRShaderIf shader)
引数
shaderIndexシェーダインデックス shaderIndexにCreateShaderの戻り値を指定するとそのシェーダへ切り替える. shaderIndexに-1を指定するとシェーダを無効化し固定機能パイプラインへ切り替える.
void SetShadowLight ( const GRShadowLightDesc sld)

ロケーション情報の取得(SetShaderFormat()でシェーダフォーマットを設定しておく必要あり) シャドウマップ用ライトのパラメータを設定


この構造体の説明は次のファイルから生成されました: