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

グラフィックスレンダラーのインタフェース(デバイスの設定、カメラの設定)

#include <SprGRRender.h>

GRRenderIfに対する継承グラフ

Public メソッド

 SPR_IFDEF (GRRender)
 
void SetDevice (GRDeviceIf *dev)
 デバイスの設定
 
GRDeviceIfGetDevice ()
 デバイスの取得
 
void SetCamera (const GRCameraDesc &cam)
 カメラの設定
 
const GRCameraDescGetCamera ()
 カメラの取得
 
void Reshape (Vec2f pos, Vec2f screenSize)
 スクリーン(ウィンドウ)サイズ変更時のViewportと射影行列を設定
 
Vec2f GetPixelSize ()
 1ピクセルの物理サイズを取得
 
Vec4f GetReservedColor (int matname)
 予約色を取得
 
Vec3f ScreenToCamera (int x, int y, float depth, bool LorR=false)
 スクリーン座標からカメラ座標への変換 [詳細]
 
void EnterScreenCoordinate ()
 スクリーン座標系へ切り替える スクリーン座標で文字などを描画するための機能. 画面左上が原点,画面右方向がx軸正方向,画面下方向がy軸正方向. 座標はピクセル単位.
 
void LeaveScreenCoordinate ()
 スクリーン座標系から戻る
 
- Public メソッド inherited from GRRenderBaseIf
 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
 状態型をメモリブロックに戻す
 

Additional Inherited Members

- Public 型 inherited from GRRenderBaseIf
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
}
 
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
}
 

関数

Vec3f ScreenToCamera ( int  x,
int  y,
float  depth,
bool  LorR = false 
)
引数
xスクリーンx座標
yスクリーンy座標
depthz座標
LorRtrueなら左手座標(D3D),falseならば右手座標(GL)
戻り値
カメラ座標 カーソル位置などのスクリーン座標(ピクセル)をカメラ座標系に変換する. z方向に自由度が残るのでdepthで指定する. depthはカメラ原点からのz方向距離で必ずdepth > 0.

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