데비안에 GLFW3 및 Derelict3 설치

OpenGL을 공부할 필요에 몰두했지만 모처럼이므로 이쪽도 공부중인 D언어로 해보기로 했다.
Debian이라고 Derelict3도 GLFW3도 패키지가 아직 없기 때문에 자전으로 넣는다.

추기(4/20):libglfw3 들어간 것 같습니다.
htps : // 팹 c 게이 s. 데비안. 오 rg / 응 sta b ぇ / mian / ぃ bglfw3

GLFW3 설치



CMakeLists.txt의 BUILD_SHARED_LIBS를 켭니다.
BUILD_SHARED_LIBS가 OFF인 채로 정적 라이브러리 밖에 만들 수 없지만, Derelict는 libglfw3.so를 동적으로 링크하려고 하기 때문에 런타임에 이끼.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 743e72d..1c4498c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@ set(GLFW_VERSION "${GLFW_VERSION_MAJOR}.${GLFW_VERSION_MINOR}")
 set(GLFW_VERSION_FULL "${GLFW_VERSION}.${GLFW_VERSION_PATCH}${GLFW_VERSION_EXTRA}")
 set(LIB_SUFFIX "" CACHE STRING "Takes an empty string or 64. Directory where lib will be installed: lib or lib64")

-option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" ON)
 option(GLFW_BUILD_TESTS "Build the GLFW test programs" ON)
 option(GLFW_BUILD_DOCS "Build the GLFW documentation" ON)

빌드
$ git clone https://github.com/glfw/glfw.git
$ cd glfw
$ cmake .
$ make
$ sudo make install

cmake 때 RandR이 없어서 화가 나서$ sudo aptitude install libxrandr-dev했다.

Derelict3 빌드



데비안에는 dmd 패키지가 없으므로 ldc(ldmd2)로 빌드한다.
$ git clone https://github.com/aldacron/Derelict3.git
$ cd Derelict3/build
$ ldmd2 build.d
$ ./build Util GL3 GLFW3

패키지는
Derelict3/import
도서관은
Derelict3/lib/ldc
에 각각 만들어진다.

htps : // 기주 b. 코 m / 아 l다 c 롱 / 데레 ct3
README에는 특히 특정의 디렉토리에의 인스톨 방법등은 기재되어 있지 않았으므로, 이번은 위의 디렉토리를 Makefile에 직접 지정하기로 한다.

테스트 코드 작성



h tp // w w. glfw. rg / cs / 3.0 / ku ck. HTML
여기를 참고로.

에러 처리 등은 이번에는 생략

openwindow.d
import derelict.opengl3.gl;
import derelict.opengl3.gl3;
import derelict.glfw3.glfw3;

import std.stdio;

void main() {
  DerelictGL.load();
  DerelictGLFW3.load();

  glfwInit();
  auto window = glfwCreateWindow(800, 600, "Hello, GLFW3!", null, null);
  glfwMakeContextCurrent(window);

  while(!glfwWindowShouldClose(window)){
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);

    immutable ratio = width / cast(float) height;
    glViewport(0, 0, width, height);
    glClear(GL_COLOR_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glOrtho(-ratio, ratio, -1., 1., 1., -1.);
    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();
    glRotatef(cast(float) glfwGetTime() * 50., 0., 0., 1.);

    glBegin(GL_TRIANGLES);
    glColor3f(1., 0., 0.);
    glVertex3f(-0.6, -0.4, 0.);
    glColor3f(0., 1., 0.);
    glVertex3f(0.6, -0.4, 0.);
    glColor3f(0., 0., 1.);
    glVertex3f(0., 0.6, 0.);
    glEnd();

    glfwSwapBuffers(window);
    glfwPollEvents();
  }

  glfwDestroyWindow(window);
  glfwTerminate();

}

아래 Makefile
코드내에 pragma(lib, "DerelictGL3"); 라고 쓰면 본래는 -L-lDerelictGL3
Makefile
P:=openwindow
DC:=ldmd2
SRCS:=openwindow.d
INCLUDES:=$(HOME)/work/Derelict3/import/
LIBS:=-L-L$(HOME)/work/Derelict3/lib/ldc/ -L-lDerelictGL3 -L-lDerelictGLFW3 -L-lDerelictUtil

$(P): $(SRCS)
        $(DC) -of$(P) -I$(INCLUDES) $(LIBS) $(SRCS)

clean:
        -rm -f openwindow.o openwindow
.PHONY: clean

출력은 이런 느낌. 삼각형이 빙글빙글 돌다.

좋은 웹페이지 즐겨찾기