戻る

三角形描画

June 25, 2020

三角形を書くというよりは, openglの処理の流れの全体像を見ていくというのが目的だ. 流れは以下.

int glfwinit(void)

glfwを初期化, 成功時にGL_TRUE(=1), 失敗時にGL_FALSE(=0)を返す.

GLFWwindow *glfwCreateWindow(int width, int heightk, const char *title, GLFWmonitor *monitor, GLFWwindow *share)

void glfwMakeContextCurrent(GLFWwindow *const window)

ウィンドウのレンダリングコンテクストをカレントにする. *のあとのconstはポインタ自体がconstというだけで参照先がconstというわけではない.

glfwMakeColor(GLfloat R, GLfloat G, GLfloat B, GLfloat A);

それぞれ0-1のレンジ. Aは不透明度, 0で透明, 1で不透明.

描画ループの説明に入る. glfwWindowShouldClose()でウィンドウが閉じるべきかをイベントから判断する. glClear()でバッファを消去する. 描画の処理をし, glfwSwapBuffer()で初めてディスプレイ上に描画が反映される. このように表示バッファと内部の描画処理のバッファの二つがありこれをダブルバッファリングという. イベント駆動の場合はglfwWaitEvents()で待機, 時間経過で動く場合はglfwPollEvents()関数を用いる.

glClear(GLbitfield mask)

maskには塗り潰すバッファを指定する. GL_COLOR_BUFFER_BITの場合カラーバッファのみをクリアする.

glfwSwapBuffers(GLFWindow *const window)

windowに指定したウィンドウのカラーバッファを入れ替える.

glfwWaitEvents(void) イベント発生を待つ. メインループ以外では実行すべきではない. タイムアウト付きのglfwWaitEventsTimeout(double sec)もある.

void glfwPollEvents(void) マウス操作などのイベントを取り出し, それを記録する.

void glfwTerminate(void)

GLFWの終了処理を行う.

void glfwSwapInterval(int interval)

カラーバッファ入れ替えで待つV-Syncの最小回数

OpenGLのデータ型

C++の型は処理系依存のものが多いので統一的な扱いをするためにライブラリ側が型を用意する事はよくある事だ. これで処理が重くなる事は全くないので積極的に使うことができる.

OpenGLのデータ型 最小ビット数 説明
GLboolean 1 論理値
GLbyte 8
GLubyte 8
GLchar 8
GLshort 16
GLushort 16
GLint 32
GLuint 32
GLint64 64
GLuint64 64
GLfloat 32
GLdouble 64
GLintptr
GLsizeptr 32
GLint 32