GL CHOCO ENGINE
Loading...
Searching...
No Matches
interface_vbo.h File Reference

VBOモジュールが提供する機能をグラフィックスAPIによって差し替え可能な仮想関数テーブルを提供する More...

Include dependency graph for interface_vbo.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  renderer_vbo_vtable
 VBO機能仮想関数テーブル More...
 

Typedefs

typedef renderer_result_t(* pfn_vertex_buffer_create) (renderer_backend_vbo_t **vertex_buffer_)
 VBO構造体インスタンスのメモリを確保し、初期化(VBOの生成)する
 
typedef void(* pfn_vertex_buffer_destroy) (renderer_backend_vbo_t **vertex_buffer_)
 VBOを無効化し、VBO構造体インスタンスのメモリを解放する
 
typedef renderer_result_t(* pfn_vertex_buffer_bind) (const renderer_backend_vbo_t *vertex_buffer_, uint32_t *out_vbo_id_)
 VBOのbindを行う
 
typedef renderer_result_t(* pfn_vertex_buffer_unbind) (const renderer_backend_vbo_t *vertex_buffer_)
 VBOのunbindを行う
 
typedef renderer_result_t(* pfn_vertex_buffer_vertex_load) (const renderer_backend_vbo_t *vertex_buffer_, size_t load_size_, void *load_data_, buffer_usage_t usage_)
 VBOが管理する頂点バッファに頂点情報を転送する
 
typedef struct renderer_vbo_vtable renderer_vbo_vtable_t
 VBO機能仮想関数テーブル
 

Detailed Description

VBOモジュールが提供する機能をグラフィックスAPIによって差し替え可能な仮想関数テーブルを提供する

Author
chocolate-pie24
Note
renderer_backendはStrategyパターンによるグラフィックスAPI抽象化を行っている。 vertex_buffer_objectはVBOモジュールについてのStrategy Interfaceに相当する。
本モジュールのリソース管理責務はモジュールが負う。ユーザー側でのメモリ確保、解放は行わないこと。
Version
0.1
Date
2026-02-06

Typedef Documentation

◆ pfn_vertex_buffer_bind

typedef renderer_result_t(* pfn_vertex_buffer_bind) (const renderer_backend_vbo_t *vertex_buffer_, uint32_t *out_vbo_id_)

VBOのbindを行う

Note
既にbind済みのVBOの場合は何もしない
Todo:
renderer_frontend作成後、外部非公開とする
Parameters
[in]vertex_buffer_bind対象VBO構造体インスタンスへのポインタ
[in,out]out_vbo_id_bindされたVBO ID格納先
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • vertex_buffer_ == NULL
  • out_vbo_id_ == NULL
RENDERER_SUCCESSbindに成功し、正常終了
上記以外グラフィックスAPIごとの実装依存

◆ pfn_vertex_buffer_create

typedef renderer_result_t(* pfn_vertex_buffer_create) (renderer_backend_vbo_t **vertex_buffer_)

VBO構造体インスタンスのメモリを確保し、初期化(VBOの生成)する

Parameters
[in,out]vertex_buffer_VBO構造体インスタンスへのダブルポインタ
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • vertex_buffer_ == NULL
  • *vertex_buffer_ != NULL
RENDERER_NO_MEMORYメモリ確保失敗
RENDERER_LIMIT_EXCEEDEDメモリ管理システムのシステム使用可能範囲上限を超過
RENDERER_SUCCESS処理に成功し、正常終了
上記以外グラフィックスAPI実装依存

◆ pfn_vertex_buffer_destroy

typedef void(* pfn_vertex_buffer_destroy) (renderer_backend_vbo_t **vertex_buffer_)

VBOを無効化し、VBO構造体インスタンスのメモリを解放する

Note
2重destroyを許可する(*vertex_buffer_ == NULLで何もしない)
Parameters
[in,out]vertex_buffer_無効化、メモリ開放対象VBO構造体インスタンスへのダブルポインタ

◆ pfn_vertex_buffer_unbind

typedef renderer_result_t(* pfn_vertex_buffer_unbind) (const renderer_backend_vbo_t *vertex_buffer_)

VBOのunbindを行う

Todo:
renderer_frontend作成後、外部非公開とする
Parameters
[in]vertex_buffer_unbind対象VBO構造体インスタンスへのポインタ
Return values
RENDERER_INVALID_ARGUMENTvertex_buffer_ == NULL
RENDERER_SUCCESSunbindに成功し、正常終了
上記以外グラフィックスAPIごとの実装依存

◆ pfn_vertex_buffer_vertex_load

typedef renderer_result_t(* pfn_vertex_buffer_vertex_load) (const renderer_backend_vbo_t *vertex_buffer_, size_t load_size_, void *load_data_, buffer_usage_t usage_)

VBOが管理する頂点バッファに頂点情報を転送する

Parameters
vertex_buffer_VBO構造体インスタンスへのポインタ
load_size_転送サイズ(byte)
load_data_転送データの先頭アドレス
usage_バッファデータの取り扱い buffer_usage_t
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • vertex_buffer_ == NULL
  • load_data_ == NULL
  • load_size_ == 0
RENDERER_RUNTIME_ERRORusage_の値が規定範囲外
RENDERER_SUCCESSデータの転送に成功し、正常終了
上記以外グラフィックスAPIごとの実装依存

◆ renderer_vbo_vtable_t

VBO機能仮想関数テーブル