Skip to content

srcs__renderer__title_screen_cpp

Ishi_eenn edited this page May 19, 2026 · 2 revisions

srcs/renderer/title_screen.cpp

役割

起動時タイトル画面の回転ブロックと文字描画を構築/描画する。

主な型

  • Seg (struct, 行 22)
  • Glyph (struct, 行 23)

関数一覧

  • findGlyph: 行 97-101
  • addFace: 行 104-116
  • TitleScreen::buildCube: 行 119-183
  • TitleScreen::appendSeg: 行 186-190
  • TitleScreen::textWidth: 行 192-201
  • TitleScreen::appendText: 行 203-219
  • TitleScreen::buildTextBuffers: 行 222-272
  • TitleScreen::init: 行 275-285
  • TitleScreen::render: 行 288-347
  • TitleScreen::destroy: 行 350-358

関数ごとの説明

findGlyph

  • 場所: 行 97-101
  • シグネチャ: static const Glyph* findGlyph(char c)
  • 内容: このファイルの責務に沿った補助処理を行う。
  • 主な呼び出し: findGlyph()

addFace

  • 場所: 行 104-116
  • シグネチャ: static void addFace(std::vector<Vertex>& verts, std::vector<uint32_t>& idx, glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, glm::vec3 n, float u0, float v0, float u1, float v1)
  • 内容: このファイルの責務に沿った補助処理を行う。
  • 主な呼び出し: size(), push_back()

TitleScreen::buildCube

  • 場所: 行 119-183
  • シグネチャ: void TitleScreen::buildCube(const AtlasUV& uv)
  • 内容: 入力データから描画または処理に使う中間データを構築する。
  • 主な呼び出し: buildCube(), reserve(), order(), Y(), addFace(), V(), X(), Z(), size(), glGenVertexArrays()

手順:

  1. 計算結果を内部状態、配列、キュー、または対象オブジェクトへ反映する。
  2. OpenGL/GLFWのAPIを呼び、描画状態やGPUリソースを操作する。

TitleScreen::appendSeg

  • 場所: 行 186-190
  • シグネチャ: void TitleScreen::appendSeg(float* v, int& cnt, float x0, float y0, float x1, float y1) const
  • 内容: このファイルの責務に沿った補助処理を行う。

TitleScreen::textWidth

  • 場所: 行 192-201
  • シグネチャ: float TitleScreen::textWidth(const char* text, float cw, float gap) const
  • 内容: このファイルの責務に沿った補助処理を行う。
  • 主な呼び出し: textWidth()

TitleScreen::appendText

  • 場所: 行 203-219
  • シグネチャ: void TitleScreen::appendText(float* v, int& cnt, const char* text, float start_x, float y, float cw, float ch, float gap) const
  • 内容: このファイルの責務に沿った補助処理を行う。
  • 主な呼び出し: findGlyph(), appendSeg()

TitleScreen::buildTextBuffers

  • 場所: 行 222-272
  • シグネチャ: void TitleScreen::buildTextBuffers()
  • 内容: 入力データから描画または処理に使う中間データを構築する。
  • 主な呼び出し: buildTextBuffers(), textWidth(), appendText(), appendSeg(), glGenVertexArrays(), glGenBuffers(), glBindVertexArray(), glBindBuffer(), glBufferData(), glEnableVertexAttribArray()

手順:

  1. OpenGL/GLFWのAPIを呼び、描画状態やGPUリソースを操作する。

TitleScreen::init

  • 場所: 行 275-285
  • シグネチャ: bool TitleScreen::init(TextureAtlas& atlas, Shader& chunk_shader, Shader& hud_shader)
  • 内容: 必要な状態や外部リソースを初期化する。
  • 主な呼び出し: init(), glId(), srand(), time(), rand(), buildCube(), getUV(), buildTextBuffers()

TitleScreen::render

  • 場所: 行 288-347
  • シグネチャ: bool TitleScreen::render(float dt, GLFWwindow* window, int w, int h)
  • 内容: タイトル画面の回転ブロックと点滅テキストを描画し、開始入力があればtrueを返す。
  • 主な呼び出し: render(), glfwGetKey(), glClearColor(), glClear(), block(), lookAt(), vec3(), perspective(), radians(), model()

手順:

  1. 経過時間から回転角と点滅量を更新する。
  2. 3Dブロック表示用のビュー/射影/モデル行列を作る。
  3. チャンク用シェーダーで回転ブロックを描画する。
  4. HUD用シェーダーでタイトル文字と開始案内を描画する。
  5. Enter/Space/クリックなどの開始入力を検出して結果を返す。

TitleScreen::destroy

  • 場所: 行 350-358
  • シグネチャ: void TitleScreen::destroy()
  • 内容: 確保済みのリソースを解放し、再利用されない状態にする。
  • 主な呼び出し: destroy(), glDeleteVertexArrays(), glDeleteBuffers()

Clone this wiki locally