KOTET'S PERSONAL BLOG

#dlang OpenGL/GLFWはじめての人がD言語でウィンドウを表示するまで

Created: , Last modified:
#dlang #qiita #tech

これは1年以上前の記事です

ここに書かれている情報、見解は現在のものとは異なっている場合があります。

この記事はQiitaに投稿されたものの転載です。


DでOpenGLとかそういうのが使いたくなったので練習をした。
Dubを使って環境構築した記事がなかなか見つからなかったのでまとめ記事を書く。
Ubuntu 16.04 LTS。

OpenGLとGLFWの導入

OpenGL
$sudo apt install mesa-utils

GLFW
$sudo apt install xorg-dev
$git clone https://github.com/glfw/glfw.git
$cd glfw

ここで共有ライブラリを作るようにCMakeLists.txtを書き換える。
でないと実行時にこうなる。

エラー

libglfw3.so - libglfw3.so: cannot open shared object file: No such file or directory
libglfw.so.3 - libglfw.so.3: cannot open shared object file: No such file or directory

CMakeLists.txt

-option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
$cmake .
$make
$sudo make install
-- Installing: /usr/local/lib/libglfw.so.3
-- Installing: /usr/local/lib/libglfw.so

プロジェクトを作る

$dub init PROJECTNAME derelict-gl3 derelict-glfw3

以前は一つのリポジトリにすべてが入っていたようだが、今はバラになっていた。

テスト

参考元

source/app.d

import derelict.opengl3.gl;
import derelict.glfw3.glfw3;

void main()
{
    //Derelictの初期化。この下からOpenGLやGLFWのいろいろが使えるようになる。
    DerelictGL.load();
    DerelictGLFW3.load();

    glfwInit();

    GLFWwindow *window = glfwCreateWindow(100, 100, "test", null, null);
    
    glfwMakeContextCurrent(window);

    while(!glfwWindowShouldClose(window))
    {
        glClear(GL_COLOR_BUFFER_BIT);

        glEnd();
        glfwSwapBuffers(window);

        glfwPollEvents();
    }

    glfwTerminate();
}
$dub run

gltest.png

うまくいけばこんな感じの小さなウィンドウが出てくる。