-
Notifications
You must be signed in to change notification settings - Fork 0
srcs__renderer__renderer_cpp
Ishi_eenn edited this page May 19, 2026
·
2 revisions
OpenGL初期化、シェーダー/テクスチャ作成、チャンク/水/空/HUD/ミニマップ/タイトル画面の描画を担当する。
-
Renderer::~Renderer: 行 37-50 -
Renderer::init: 行 58-114 -
Renderer::drawTitleScreen: 行 119-121 -
Renderer::updateMinimap: 行 123-125 -
Renderer::drawMinimap: 行 127-129 -
Renderer::initHud: 行 142-169 -
Renderer::appendLine: 行 177-182 -
Renderer::appendDigit: 行 184-206 -
Renderer::appendNumber: 行 208-221 -
Renderer::appendLetter: 行 226-249 -
Renderer::appendSignedNumberLeft: 行 254-273 -
Renderer::drawHud: 行 280-349 -
Renderer::drawUnderwaterOverlay: 行 356-364 -
Renderer::uploadChunkMesh: 行 377-453 -
Renderer::destroyChunkMesh: 行 460-473 -
Renderer::beginFrame: 行 481-484 -
buildMVP: 行 496-510 -
setChunkLightingUniforms: 行 519-525 -
Renderer::drawChunk: 行 533-550 -
Renderer::drawChunkWater: 行 561-585 -
Renderer::drawSkybox: 行 594-602 -
Renderer::endFrame: 行 612-614 -
Renderer::onResize: 行 619-623 -
Renderer::setTimeOfDay: 行 642-716
- 場所: 行 37-50
- シグネチャ:
Renderer::~Renderer() - 内容: 描画に必要な状態を設定し、対象を画面へ出力する。
- 主な呼び出し:
Renderer(),destroy(),glDeleteVertexArrays(),glDeleteBuffers()
- 場所: 行 58-114
- シグネチャ:
bool Renderer::init(GLFWwindow* window) - 内容: OpenGL状態、シェーダー、テクスチャアトラス、空、HUD、ミニマップ、タイトル画面を初期化する。
- 主な呼び出し:
init(),gladLoadGL(),glGetString(),glEnable(),glCullFace(),glBlendFunc(),load(),generate(),initHud()
手順:
- OpenGLの基本状態を設定する。
- チャンク、HUD、ミニマップ、空用のシェーダーを読み込む。
- テクスチャアトラスを生成し、シェーダーへsampler設定を行う。
- Skybox、HUD、Minimap、TitleScreenのリソースを作成する。
- 初期の時刻/太陽方向を設定する。
- 場所: 行 119-121
- シグネチャ:
bool Renderer::drawTitleScreen(float dt) - 内容: 描画に必要な状態を設定し、対象を画面へ出力する。
- 主な呼び出し:
drawTitleScreen(),render()
- 場所: 行 123-125
- シグネチャ:
void Renderer::updateMinimap(World& world, float px, float pz, float yaw_deg, float dt) - 内容: 現在の状態と入力に基づいて、次のフレーム用の状態へ更新する。
- 主な呼び出し:
updateMinimap(),update()
- 場所: 行 127-129
- シグネチャ:
void Renderer::drawMinimap() - 内容: 描画に必要な状態を設定し、対象を画面へ出力する。
- 主な呼び出し:
drawMinimap(),draw()
- 場所: 行 142-169
- シグネチャ:
void Renderer::initHud() - 内容: 必要な状態や外部リソースを初期化する。
- 主な呼び出し:
initHud(),load(),glGenVertexArrays(),glGenBuffers(),glBindVertexArray(),glBindBuffer(),glBufferData(),glEnableVertexAttribArray(),glVertexAttribPointer()
- 場所: 行 177-182
- シグネチャ:
void Renderer::appendLine(float* verts, int& count, float x0, float y0, float x1, float y1) const - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
appendLine()
- 場所: 行 184-206
- シグネチャ:
void Renderer::appendDigit(float* verts, int& count, int digit, float left, float top, float w, float h) const - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
appendDigit(),appendLine()
- 場所: 行 208-221
- シグネチャ:
void Renderer::appendNumber(float* verts, int& count, int value, float right, float top, float w, float h, float gap) const - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
appendNumber(),snprintf(),appendDigit()
- 場所: 行 226-249
- シグネチャ:
void Renderer::appendLetter(float* verts, int& count, char letter, float left, float top, float w, float h) const - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
appendLine()
- 場所: 行 254-273
- シグネチャ:
void Renderer::appendSignedNumberLeft(float* verts, int& count, int value, float left, float top, float w, float h, float gap) const - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
snprintf(),appendLine(),appendDigit()
- 場所: 行 280-349
- シグネチャ:
void Renderer::drawHud(int fps, int px, int py, int pz) - 内容: 画面中央の十字、FPS、プレイヤー座標をHUDとして描画する。
- 主な呼び出し:
drawHud(),appendLine(),data(),appendNumber(),appendLetter(),snprintf(),appendSignedNumberLeft(),glBindBuffer(),glBufferSubData(),glDisable()
手順:
- 入力値や現在状態を検査し、処理すべき条件を絞る。
- 対象範囲やキューをループで走査する。
- 計算結果を内部状態、配列、キュー、または対象オブジェクトへ反映する。
- OpenGL/GLFWのAPIを呼び、描画状態やGPUリソースを操作する。
- 場所: 行 356-364
- シグネチャ:
void Renderer::drawUnderwaterOverlay() - 内容: 描画に必要な状態を設定し、対象を画面へ出力する。
- 主な呼び出し:
drawUnderwaterOverlay(),glDisable(),use(),setVec4(),glBindVertexArray(),glDrawArrays(),glEnable()
- 場所: 行 377-453
- シグネチャ:
void Renderer::uploadChunkMesh(Chunk* chunk) - 内容: CPU側のChunkメッシュをVAO/VBO/EBOにアップロードし、描画可能なGPUメッシュとして保持する。
- 主な呼び出し:
uploadChunkMesh(),empty(),destroyChunkMesh(),glGenVertexArrays(),glGenBuffers(),glBindVertexArray(),glBindBuffer(),glBufferData(),size(),data()
手順:
- 既存GPUメッシュがあれば破棄する。
- CPU側の頂点、不透明インデックス、水インデックスをまとめてGPUバッファへ転送する。
- Vertex構造体に合わせて頂点属性を設定する。
- 不透明と水のインデックス数を記録し、uploadedをtrueにする。
- 場所: 行 460-473
- シグネチャ:
void Renderer::destroyChunkMesh(Chunk* chunk) - 内容: 確保済みのリソースを解放し、再利用されない状態にする。
- 主な呼び出し:
destroyChunkMesh(),glDeleteVertexArrays(),glDeleteBuffers()
- 場所: 行 481-484
- シグネチャ:
void Renderer::beginFrame() - 内容: 1フレームの描画開始時に画面クリアと深度/カリングなどの状態を整える。
- 主な呼び出し:
beginFrame(),glClearColor(),glClear()
- 場所: 行 496-510
- シグネチャ:
static glm::mat4 buildMVP(const Chunk* chunk, const float* view4x4, const float* proj4x4) - 内容: 入力データから描画または処理に使う中間データを構築する。
- 主な呼び出し:
translate(),mat4(),vec3(),make_mat4()
- 場所: 行 519-525
- シグネチャ:
static void setChunkLightingUniforms(Shader& shader, const float sun_dir[3], float ambient, float sun_strength) - 内容: 内部状態や対象データに新しい値を設定する。
- 主な呼び出し:
setVec3(),setFloat()
- 場所: 行 533-550
- シグネチャ:
void Renderer::drawChunk(const Chunk* chunk, const float* view4x4, const float* proj4x4) - 内容: 不透明ブロックのチャンクメッシュを描画する。
- 主な呼び出し:
drawChunk(),buildMVP(),use(),setMat4(),value_ptr(),setChunkLightingUniforms(),bind(),setInt(),glBindVertexArray(),glDrawElements()
- 場所: 行 561-585
- シグネチャ:
void Renderer::drawChunkWater(const Chunk* chunk, const float* view4x4, const float* proj4x4) - 内容: 透明な水面用インデックスだけをブレンド付きで描画する。
- 主な呼び出し:
drawChunkWater(),buildMVP(),use(),setMat4(),value_ptr(),setChunkLightingUniforms(),bind(),setInt(),glDepthMask(),glBindVertexArray()
- 場所: 行 594-602
- シグネチャ:
void Renderer::drawSkybox(const float* view3x3, const float* proj4x4) - 内容: 描画に必要な状態を設定し、対象を画面へ出力する。
- 主な呼び出し:
drawSkybox(),use(),setVec3(),draw()
- 場所: 行 612-614
- シグネチャ:
void Renderer::endFrame() - 内容: バックバッファを表示側へ交換し、フレーム描画を完了する。
- 主な呼び出し:
endFrame(),glfwSwapBuffers()
- 場所: 行 619-623
- シグネチャ:
void Renderer::onResize(int w, int h) - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
onResize(),glViewport()
- 場所: 行 642-716
- シグネチャ:
void Renderer::setTimeOfDay(float t) - 内容: 内部状態や対象データに新しい値を設定する。
- 主な呼び出し:
setTimeOfDay(),sin(),cos(),sqrt(),clamp01(),lerpCol()
手順:
- 入力値や現在状態を検査し、処理すべき条件を絞る。
- 対象範囲やキューをループで走査する。
- 計算結果を内部状態、配列、キュー、または対象オブジェクトへ反映する。
- 処理結果または成功/失敗を呼び出し元へ返す。
ft_vox 仕様書
- Home
- 概要
- Core
- Player
- World
- Streaming
- Renderer
- srcs/renderer/frustum.cpp
- srcs/renderer/minimap.cpp
- srcs/renderer/renderer.cpp
- srcs/renderer/shader.cpp
- srcs/renderer/skybox.cpp
- srcs/renderer/texture_atlas.cpp
- srcs/renderer/title_screen.cpp
- srcs/renderer/frustum.hpp
- srcs/renderer/minimap.hpp
- srcs/renderer/renderer.hpp
- srcs/renderer/shader.hpp
- srcs/renderer/skybox.hpp
- srcs/renderer/texture_atlas.hpp
- srcs/renderer/title_screen.hpp
- Interfaces
- Shaders
- Build / Docs