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

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

#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#include "engine/renderer/renderer_backend/renderer_backend_types.h"
#include "engine/renderer/renderer_core/renderer_types.h"
Include dependency graph for interface_vao.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  renderer_vao_vtable
 VAO機能仮想関数テーブル More...
 

Typedefs

typedef renderer_result_t(* pfn_vertex_array_create) (renderer_backend_vao_t **vertex_array_)
 VAO構造体インスタンスのメモリを確保し、初期化(VAOの生成)する
 
typedef void(* pfn_vertex_array_destroy) (renderer_backend_vao_t **vertex_array_)
 VAOを無効化し、VAO構造体インスタンスのメモリを解放する
 
typedef renderer_result_t(* pfn_vertex_array_bind) (const renderer_backend_vao_t *vertex_array_, uint32_t *out_vao_id_)
 VAOのbindを行う
 
typedef renderer_result_t(* pfn_vertex_array_unbind) (const renderer_backend_vao_t *vertex_array_)
 VAOのunbindを行う
 
typedef renderer_result_t(* pfn_vertex_array_attribute_set) (const renderer_backend_vao_t *vertex_array_, uint32_t layout_, int32_t size_, renderer_type_t type_, bool normalized_, size_t stride_, size_t offset_)
 VAOで管理する頂点情報のレイアウト情報を設定する
 
typedef struct renderer_vao_vtable renderer_vao_vtable_t
 VAO機能仮想関数テーブル
 

Detailed Description

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

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

Typedef Documentation

◆ pfn_vertex_array_attribute_set

typedef renderer_result_t(* pfn_vertex_array_attribute_set) (const renderer_backend_vao_t *vertex_array_, uint32_t layout_, int32_t size_, renderer_type_t type_, bool normalized_, size_t stride_, size_t offset_)

VAOで管理する頂点情報のレイアウト情報を設定する

Note
本API内でbind処理を行う(既にbind済であればbindしない)ため、実行前のbindは不要
Parameters
[in]vertex_array_設定対象VAO構造体インスタンスへのポインタ
layout_シェーダープログラム内のどのバッファ変数の設定値かを指定
size_頂点情報に含まれるデータの数([x, y, z]の3次元座標のみであれば3)
type_バッファに格納されているデータの型 renderer_type_t
normalized_与えられた頂点データを正規化するかどうかを指定
stride_頂点情報1つあたりのサイズを指定(GLfloat型の[x, y, z]であれば、sizeof(GLfloat) x 3を指定)
offset_「この頂点属性の先頭が、現在GL_ARRAY_BUFFERにバインドされているバッファの先頭から何バイト目にあるか」を指定
Return values
RENDERER_INVALID_ARGUMENTvertex_array_ == NULL
RENDERER_RUNTIME_ERRORtype_の値が既定値外
RENDERER_SUCCESS処理に成功し、正常終了
上記以外グラフィックスAPIごとの実装依存

◆ pfn_vertex_array_bind

typedef renderer_result_t(* pfn_vertex_array_bind) (const renderer_backend_vao_t *vertex_array_, uint32_t *out_vao_id_)

VAOのbindを行う

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

◆ pfn_vertex_array_create

typedef renderer_result_t(* pfn_vertex_array_create) (renderer_backend_vao_t **vertex_array_)

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

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

◆ pfn_vertex_array_destroy

typedef void(* pfn_vertex_array_destroy) (renderer_backend_vao_t **vertex_array_)

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

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

◆ pfn_vertex_array_unbind

typedef renderer_result_t(* pfn_vertex_array_unbind) (const renderer_backend_vao_t *vertex_array_)

VAOのunbindを行う

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

◆ renderer_vao_vtable_t

VAO機能仮想関数テーブル