![]() |
Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
グラフィックスレンダラーのインタフェース(ユーザインタフェース)
#include <SprGRRender.h>

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がすでに描かれたカラーバッファの色 | |
| 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) |
| 頂点ブレンディングを有効/無効にする | |
| GRShaderIf * | CreateShader (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) | |
| ObjectIf * | GetObjectIf () |
| const ObjectIf * | GetObjectIf () 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 |
| 子オブジェクトの数 | |
| ObjectIf * | GetChildObject (size_t pos) |
| 子オブジェクトの取得 | |
| const ObjectIf * | GetChildObject (size_t pos) const |
| bool | AddChildObject (ObjectIf *o) |
| 子オブジェクトの追加.複数のオブジェクトの子オブジェクトとして追加してよい. 例えば,GRFrameはツリーを作るが,全ノードがGRSceneの子でもある. | |
| bool | DelChildObject (ObjectIf *o) |
| 子オブジェクトの削除 | |
| void | Clear () |
| すべての子オブジェクトの削除と、プロパティのクリア | |
| ObjectIf * | CreateObject (const IfInfo *info, const void *desc) |
| オブジェクトを作成し,AddChildObject()を呼ぶ. | |
| template<class T > | |
| ObjectIf * | CreateObject (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 |
| enum TDepthFunc |
| 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 | ||
| ) |
| pos | World座標系での書き始めの位置,ビューポートをはみ出すと何も表示されなくなるので注意. |
| 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()でシェーダフォーマットを設定しておく必要あり) シャドウマップ用ライトのパラメータを設定