床井研究室

昼食

私が学生の時、ボスはほぼ毎日研究室のメンバーと昼食を食べに行っていました (昼になると「メシ行こかぁ〜」と声をかけてきた). でも、私自身はそういうことを全然していません。弁当を持参していることもありますが、学生さんが怖いというか、声をかけづらいということもあります。学生さんに命令形でお願いすることも苦手です。指導力がなくて申し訳ありません。でも、このままでは大事なことも伝わりませんね。それでも学生さんはマイペースながらそれなりにやってくれているようで、ありがたいことです。

OpenGL

このゼミは OpenGL の使い方について勉強することが目的なので、OpenGL が使える環境を用意しないといけません。研究室のマシンは、ドライバを入れ替えれば OpenGL 3.0 以降を使えるものもありますが、現状では多くのマシンが OpenGL 2.1 までの機能しか使えないと思います。私のマシンのビデオカードも RADEON 9800 という古いものなので、OpenGL 2.1 までしか対応できません。そこで、このゼミでは OpenGL 2.1 を使いつつ、できるだけ固定機能ハードウェアを使わない、というやり方で進めたいと思います。出張やめたら PC 買い換える資金が捻出できるんだけどな。

GLUT

また、このゼミでも例によって GLUT を使うことにします。オリジナルの GLUT はもう長いことメンテナンスされていないので、代わりに freeglut や OpenGLUT を使ったほうがいいかもしれません。実際、最近の Linux のディストリビューションの多くは freeglut を採用しているようです。Mac OS X の GLUT は、Apple 自前の実装です。なお GLUT では、古い OpenGL の機能を削り落とした forward compatible あるいは core profile のレンダリングコンテキストを作成することができません (多分…実はよく知らんのだな).

Windows で GLUT を使うには、GLUT の Windows 用のバイナリファイルに含まれる glut32.lib と glut32.dll, および glut.h をソースプログラムと同じフォルダに入れておいてください1

GLEW

グラフィックスハードウェアが対応しており、ドライバが最新であれば、OpenGL の最新の機能を使用することができます。しかし、最新の機能を呼び出す API が、必ずしも開発環境 (Visual Studio など) から使用できるようになっているとは限りません。不足している API を整備するには、GLEWGLee2 を導入します。なお、Linux において X Window System に NVIDIA のプロプライエタリドライバを組み込んでいる場合や、Mac OS X では、これらを使用する必要はありません。AMD (ATI) の場合は GLEW を組み込む必要があると思いますが、実機がないので割愛させてください。Windows で GLEW を使用するには、GLEW の Windows 用バイナリファイルに含まれる glew32.lib と glew32.dll, および glew.h と wglew.h (これは多分使わないと思う) をソースプログラムと同じフォルダに入れておいてください。

glext.h

あと、glext.h も最新のものを入手しておいてください。Windows の場合は、これもソースプログラムと同じフォルダに入れておいてください。

雛形のソースプログラム

と言うわけで、このゼミで作成するプログラムの最初の雛形は、以下のようになります。GLEW に関係する部分を太字にしてあります。

#if defined(_WIN32)
#  define _USE_MATH_DEFINES
#  define _CRT_SECURE_NO_WARNINGS
#  include <GL/glew.h>
#  include <GL/glut.h>
#elif defined(__APPLE__)
#  define GL_SILENCE_DEPRECATION
#  include <GLUT/glut.h>
#else
#  define GL_GLEXT_PROTOTYPES
#  include <GL/glut.h>
#endif
#include <stdio.h>
#include <stdlib.h>

/*
** 画面表示
*/
static void display(void)
{
  /* 画面クリア */
  glClear(GL_COLOR_BUFFER_BIT);
  glFlush();
}

/*
** 初期化
*/
static void init(void)
{
#if defined(_WIN32)
  /* GLEW の初期化 */
  GLenum err = glewInit();
  if (err != GLEW_OK) {
    fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
    exit(1);
  }
#endif

  /* 背景色 */
  glClearColor(1.0, 1.0, 1.0, 1.0);
}

/*
** メインプログラム
*/
int main(int argc, char* argv[])
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_RGB);
  glutCreateWindow(argv[0]);
  glutDisplayFunc(display);
  init();
  glutMainLoop();

  return 0;
}

ノートパソコン

今使っているノートパソコンは7年目なので、いい加減買い換えたいと思ってます。2回ほど宙を舞ってるし。今度は OpenGL を使ったデモが動かせるように、それなりの GPU が載ったものが欲しいんですが、そうすると軽いものがありません。VAIO Z はちと高いし。なんだかんだで微妙に研究費が足りない。巨額の研究費はいらんのだけどなぁ。

  1. これも古くなり、すでに長い間メンテナンスされていないので、今は freeglut を使ってください。(2026 年 8 月 27 日 追記) 

  2. GLee は OpenGL 3.0 までしかサポートしておらず、最近はメンテナンスされていないようです。(2026 年 8 月 27 日 追記)