![]() |
GL CHOCO ENGINE
|
シェーダープログラム/シェーダーオブジェクトの操作関数をまとめたvtableを定義する More...
#include <stddef.h>#include <stdint.h>#include "engine/renderer/renderer_backend/renderer_backend_types.h"#include "engine/renderer/renderer_core/renderer_types.h"

Go to the source code of this file.
Data Structures | |
| struct | renderer_shader_vtable |
| シェーダー機能仮想関数テーブル More... | |
Typedefs | |
| typedef renderer_result_t(* | pfn_renderer_shader_create) (renderer_backend_shader_t **shader_handle_) |
| シェーダーハンドル構造体インスタンスのメモリを確保し、renderer_backend_shader_tインスタンスのフィールドを全て0で初期化する | |
| typedef void(* | pfn_renderer_shader_destroy) (renderer_backend_shader_t **shader_handle_) |
| シェーダーハンドル構造体インスタンスを破棄する | |
| typedef renderer_result_t(* | pfn_renderer_shader_compile) (shader_type_t shader_type_, const char *shader_source_, renderer_backend_shader_t *shader_handle_) |
| シェーダーソースをコンパイルし、シェーダーオブジェクトハンドルを初期化する | |
| typedef renderer_result_t(* | pfn_renderer_shader_link) (renderer_backend_shader_t *shader_handle_) |
| コンパイル済みのシェーダーオブジェクトをリンクし、シェーダープログラムハンドルを初期化する | |
| typedef renderer_result_t(* | pfn_renderer_shader_use) (renderer_backend_shader_t *shader_handle_, uint32_t *out_program_id_) |
| シェーダープログラムの使用開始をグラフィックスAPIに伝える | |
| typedef struct renderer_shader_vtable | renderer_shader_vtable_t |
| シェーダー機能仮想関数テーブル | |
シェーダープログラム/シェーダーオブジェクトの操作関数をまとめたvtableを定義する
| typedef renderer_result_t(* pfn_renderer_shader_compile) (shader_type_t shader_type_, const char *shader_source_, renderer_backend_shader_t *shader_handle_) |
シェーダーソースをコンパイルし、シェーダーオブジェクトハンドルを初期化する
シェーダーオブジェクトのGPUリソース確保に成功後、コンパイルに失敗した場合はGPUリソースは破棄される
以下の処理を行う
| [in] | shader_type_ | シェーダー種別 shader_type_t |
| [in] | shader_source_ | シェーダーソース文字列 |
| [in,out] | shader_handle_ | コンパイルされたシェーダーオブジェクトのハンドルを格納する |
| RENDERER_INVALID_ARGUMENT | 以下のいずれか
|
| RENDERER_BAD_OPERATION | 以下のいずれか
|
| RENDERER_SHADER_COMPILE_ERROR | シェーダーオブジェクトのGPU側リソース確保に失敗、またはコンパイル失敗 |
| RENDERER_LIMIT_EXCEEDED | メモリ管理システムのシステム使用可能範囲上限超過 |
| RENDERER_NO_MEMORY | メモリ割り当て失敗 |
| RENDERER_SUCCESS | シェーダーオブジェクトのコンパイルに成功し、正常終了 |
| typedef renderer_result_t(* pfn_renderer_shader_create) (renderer_backend_shader_t **shader_handle_) |
シェーダーハンドル構造体インスタンスのメモリを確保し、renderer_backend_shader_tインスタンスのフィールドを全て0で初期化する
| [out] | shader_handle_ | renderer_backend_shader_t構造体インスタンスへのダブルポインタ |
| RENDERER_INVALID_ARGUMENT | 以下のいずれか
|
| RENDERER_LIMIT_EXCEEDED | メモリ管理システムのシステム使用可能範囲上限超過 |
| RENDERER_NO_MEMORY | メモリ割り当て失敗 |
| RENDERER_UNDEFINED_ERROR | 想定していない実行結果コードを処理過程で受け取った(render_mem_allocateからのエラー伝播) |
| RENDERER_SUCCESS | メモリ確保および初期化に成功し、正常終了 |
| 上記以外 | グラフィックスAPI実装依存 |
| typedef void(* pfn_renderer_shader_destroy) (renderer_backend_shader_t **shader_handle_) |
シェーダーハンドル構造体インスタンスを破棄する
2重解放を許可する(shader_handle_ == NULLまたは*shader_handle_ == NULLの場合は何もしない)
以下の処理を行う
| [in,out] | shader_handle_ | 破棄対象構造体インスタンスへのダブルポインタ |
| typedef renderer_result_t(* pfn_renderer_shader_link) (renderer_backend_shader_t *shader_handle_) |
コンパイル済みのシェーダーオブジェクトをリンクし、シェーダープログラムハンドルを初期化する
以下の処理を行う
| [in,out] | shader_handle_ | リンクしたシェーダープログラムハンドルを格納する |
| RENDERER_INVALID_ARGUMENT | shader_handle_ == NULL |
| RENDERER_BAD_OPERATION | 以下のいずれか
|
| RENDERER_SHADER_LINK_ERROR | シェーダープログラムのGPU側リソース確保に失敗、またはシェーダーリンクエラー |
| RENDERER_LIMIT_EXCEEDED | メモリ管理システムのシステム使用可能範囲上限超過 |
| RENDERER_NO_MEMORY | メモリ割り当て失敗 |
| RENDERER_SUCCESS | プログラムのリンクに成功し、正常終了 |
| typedef renderer_result_t(* pfn_renderer_shader_use) (renderer_backend_shader_t *shader_handle_, uint32_t *out_program_id_) |
シェーダープログラムの使用開始をグラフィックスAPIに伝える
| [in] | shader_handle_ | シェーダープログラムハンドル格納構造体インスタンス |
| [in,out] | out_program_id_ | 現在使用中のプログラム識別子で、本関数実行後に更新される |
| RENDERER_INVALID_ARGUMENT | 以下のいずれか
|
| RENDERER_BAD_OPERATION | シェーダープログラムが未リンク |
| RENDERER_DATA_CORRUPTED | 以下のいずれか
|
| typedef struct renderer_shader_vtable renderer_shader_vtable_t |
シェーダー機能仮想関数テーブル