UbuntuでD言語からSDLとOpenGLを組み合わせて使ってみた。
方法はほとんど変わっていません。
ほぼメモのような感じなので、D言語でSDLやOpenGLを使う関係の記事はまとめたほうがよかったかもしれません。
ですが書き直すのが面倒なので書いてしまいます。
前回と前々回の作業を行った後に行ったので、それを前提に書いています。
ライブラリのインストールやD言語用ライブラリの準備は前回や前々回を読んでください。
コードを書いて使ってみる
ウィンドウタイトルを設定するSDL_WM_SetCaptionはC言語の関数なので、D言語のstringやnullがそのまま使えず苦労しました。
ウィンドウタイトルの英語には自信がないので、間違っているかもしれません。
import SDL; import opengl; import std.stdio; import std.string; void draw() { glClear (GL_COLOR_BUFFER_BIT); glBegin (GL_LINE_LOOP); glVertex2d (-0.9, -0.9); glVertex2d (0.9, -0.9); glVertex2d (0, 0.9); glEnd (); SDL_GL_SwapBuffers(); } void main() { if (SDL_Init(SDL_INIT_VIDEO) < 0) { writefln("SDL初期化エラー"); return; } SDL_WM_SetCaption(cast(char*)toStringz("Using SDL and OpenGL with D"), cast(char*)0); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_Surface *screen = SDL_SetVideoMode(320, 240, 32, SDL_OPENGL); if (screen == null) { writefln("画面初期化エラー"); return; } glClearColor(0.0, 0.0, 255.0, 0.0); int done = 0; SDL_Event e; while (!done) { while (SDL_PollEvent(&e)) { done = e.type == SDL_QUIT; } draw(); SDL_Delay(1000/30); } SDL_Quit(); }
コンパイルには、「dmd sdlgl.d -ISDL -Iopengl -L-lSDL -L-lGL」というコマンドを使いました。
コンパイルすると「sdlgl」という実行ファイルができます。
実行すると、青い背景に白い線で三角形が描画されます。