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

renderer_backendが保有するVBO機能の窓口を上位層に提供する More...

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

Go to the source code of this file.

Typedefs

typedef struct renderer_backend_context renderer_backend_context_t
 

Functions

renderer_result_t renderer_backend_vertex_buffer_create (renderer_backend_context_t *backend_context_, renderer_backend_vbo_t **vertex_buffer_)
 VBO内部状態管理構造体インスタンスのメモリを確保する
 
void renderer_backend_vertex_buffer_destroy (renderer_backend_context_t *backend_context_, renderer_backend_vbo_t **vertex_buffer_)
 VBO内部状態管理構造体インスタンスを破棄する
 
renderer_result_t renderer_backend_vertex_buffer_bind (renderer_backend_context_t *backend_context_, renderer_backend_vbo_t *vertex_buffer_)
 VBOをbindする
 
renderer_result_t renderer_backend_vertex_buffer_unbind (renderer_backend_context_t *backend_context_, renderer_backend_vbo_t *vertex_buffer_)
 VBOをunbindする
 
renderer_result_t renderer_backend_vertex_buffer_vertex_load (renderer_backend_context_t *backend_context_, renderer_backend_vbo_t *vertex_buffer_, size_t load_size_, void *load_data_, buffer_usage_t usage_)
 GPUの頂点情報格納バッファに頂点情報を転送する
 

Detailed Description

renderer_backendが保有するVBO機能の窓口を上位層に提供する

Author
chocolate-pie24
Version
0.1
Date
2026-02-23
License
MIT License. See LICENSE file in the project root for full license text.

Typedef Documentation

◆ renderer_backend_context_t

Renderer Backend内部状態管理構造体前方宣言

Function Documentation

◆ renderer_backend_vertex_buffer_bind()

renderer_result_t renderer_backend_vertex_buffer_bind ( renderer_backend_context_t backend_context_,
renderer_backend_vbo_t vertex_buffer_ 
)

VBOをbindする

  • 処理に成功した場合、backend_context_が保持する現在bind中のVBO値が更新される
  • 既にbind済みのvertex_buffer_が渡された場合は何もしない
Parameters
backend_context_bind用vtable保有構造体インスタンスへのポインタ
vertex_buffer_bind対象VBOハンドル構造体インスタンスへのポインタ
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • backend_context_ == NULL
  • vertex_buffer_ == NULL
RENDERER_BAD_OPERATIONbackend_context_->vbo_vtable == NULL
RENDERER_SUCCESS処理に成功し、正常終了

◆ renderer_backend_vertex_buffer_create()

renderer_result_t renderer_backend_vertex_buffer_create ( renderer_backend_context_t backend_context_,
renderer_backend_vbo_t **  vertex_buffer_ 
)

VBO内部状態管理構造体インスタンスのメモリを確保する

Note
確保されたリソースは renderer_backend_vertex_buffer_destroy を使用して破棄する
  • backend_context_が保有する仮想関数テーブルの関数を使用しメモリ確保を行う
  • 構造体インスタンスのメモリ確保に成功した場合、VBOのGPU側リソースも確保される
Parameters
[in]backend_context_VAOメモリ確保関数保有構造体インスタンスへのポインタ
[out]vertex_buffer_メモリ確保対象VBO構造体インスタンスへのダブルポインタ
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • backend_context_ == NULL
  • vertex_buffer_ == NULL
  • *vertex_buffer_ != NULL
RENDERER_BAD_OPERATIONbackend_context_が未初期化
RENDERER_NO_MEMORYメモリ確保失敗
RENDERER_LIMIT_EXCEEDEDメモリ管理システムのシステム使用可能範囲上限を超過
RENDERER_SUCCESS処理に成功し、正常終了

◆ renderer_backend_vertex_buffer_destroy()

void renderer_backend_vertex_buffer_destroy ( renderer_backend_context_t backend_context_,
renderer_backend_vbo_t **  vertex_buffer_ 
)

VBO内部状態管理構造体インスタンスを破棄する

  • VBOのGPU側リソースの解放も行う
  • 本関数実行後、vertex_buffer_ == NULLになる
  • 既に解放済みのvertex_buffer_に対しては何もしない
  • backend_context_ == NULLの場合は何もしない
Parameters
backend_context_リソース破棄用vtable保有構造体インスタンスへのポインタ
vertex_buffer_破棄対象インスタンスへのダブルポインタ

◆ renderer_backend_vertex_buffer_unbind()

renderer_result_t renderer_backend_vertex_buffer_unbind ( renderer_backend_context_t backend_context_,
renderer_backend_vbo_t vertex_buffer_ 
)

VBOをunbindする

Parameters
backend_context_unbind用vtable保有構造体インスタンスへのポインタ
vertex_buffer_unbind対象VBOハンドル構造体インスタンスへのポインタ
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • backend_context_ == NULL
  • vertex_buffer_ == NULL
RENDERER_BAD_OPERATIONbackend_context_が未初期化
RENDERER_SUCCESS処理に成功し、正常終了

◆ renderer_backend_vertex_buffer_vertex_load()

renderer_result_t renderer_backend_vertex_buffer_vertex_load ( renderer_backend_context_t backend_context_,
renderer_backend_vbo_t vertex_buffer_,
size_t  load_size_,
void *  load_data_,
buffer_usage_t  usage_ 
)

GPUの頂点情報格納バッファに頂点情報を転送する

Note
  • 転送の際には本関数内でVBOのbindが行われる
Parameters
backend_context_転送用vtable保有構造体インスタンスへのポインタ
vertex_buffer_転送対象VBOハンドルを保有する構造体インスタンスへのポインタ
load_size_転送サイズ(byte)
load_data_転送データ配列への先頭ポインタ
usage_バッファ用途 buffer_usage_t
Return values
RENDERER_INVALID_ARGUMENT以下のいずれか
  • load_size_ == 0
  • backend_context_ == NULL
  • vertex_buffer_ == NULL
RENDERER_BAD_OPERATIONbackend_context_が未初期化
RENDERER_RUNTIME_ERRORusage_の値が規定範囲外