0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

freeglutの環境構築~ティーポットの描画まで~

Last updated at Posted at 2025-12-06

概要

3DCGの描画を行うためのライブラリであるfreeglutの環境構築を行いました。
簡単なC++ソースを書いてティーポットを表示するところまで行いました。
image.png
おまけで、openglドライバのバージョン取得もしました。

※本記事では、windowsでvisual studioがインストールされていることを前提にします。詳しい環境については記事末尾をご覧ください。

そもそもfreeglutとは

windowsには標準でopengl32.dllというdllが付属しています。
openglとはKhronosグループによって策定されたオープンなAPIで、これを呼び出すことで描画処理が行えます。
ただしopenglそのものはAPIにすぎず、実装はmicrosoftやGPUベンダ(AMD, NVIDIAなど)が行っています。opengl32.dllはmicrosoftが実装したものです。

openglとwindowsAPIを使えば描画処理を書いて動かせるのですが、

  • 簡単な処理でもソース量が多くなりがち
  • Windowsでしか動かない

という点が微妙です。
freeglutを使うとこれを解決することができます。
なお、freeglutよりもモダンな書き方をできるglfwというまた別のライブラリがあって、そちらの方が人気なようです。
glfwの環境構築はこちらの記事がわかりやすそうです。(私はまだ試せていませんが…)

freeglutの環境構築

1. freeglutのダウンロード

freeglutをダウンロードします。
公式サイトgithubリポジトリのReleasesからダウンロードできます。

ダウンロードしたら解凍します。tar.gz形式になっているので、7zipなどのソフトを使って解凍します。

2. freeglutのビルド

まずはreadmeを読みます。すると、cmakeでビルドするよう書いてあります。
ですのでまずcmakeをインストールします。手順は省略します。
ここで、cmakeとはソリューション(visual studioでビルドする用のファイル)などを生成するソフトウェアです。

cmakeをインストールしたら、readme.cmakeの手順に従ってソリューションを生成します。英語なので、雑ですが訳しておきます。

  1. cmakeをダウンロードする。バイナリディストリビューションのリリースの中から選ぶ。
  2. cmakeインストーラーを起動し、好きな場所にインストールする。
  3. スタート→cmake→cmake(cmake-GUI)を起動する。(インストーラーがデスクトップに置くショートカットはGUIへのショートカットではないことに注意!)
  4. "Where is the source code"ボックスに、freeglutソースフォルダを入力/ブラウズする(/freeglutであって/freeglut/srcではない。)
  5. "Where to build the binaries"には好きなディレクトリを入力する。ここにVisual Studioソリューションが生成される。このフォルダはまだ存在しなくてもよい。
  6. Configureボタンを押す。
  7. ターゲットコンパイラを選ぶ。
  8. フォルダを作るか聞かれたらokボタンを押す。
  9. configureが終わるまで待つ。
  10. configurationオプションが出てくる。例えば、静的ライブラリを作るかなど(訳注:原文では、下の方に完璧なリストがあります)。選んだら再度Configureボタンを押す。
  11. Generationボタンが押せるようになる。ボタンを押す。
  12. ビルドファイルが指定フォルダにできている。

オプションについてですが、今回は動的ライブラリのみを使います。
できたslnファイルを実行するか、Visual studioでビルドファイルのフォルダを選ぶと、visual studioでのビルドができた状態になります。
こちらもreadme.cmakeに記述があるのでそれに従います。

  1. "C++でのデスクトップアプリ開発"ワークロードをVSにインストールしておく。
  2. VSでプロジェクトフォルダを開く。この時点で、VSはCMakeを自動的に構成しようとする。完了したら、[ビルド]-[構成マネージャ]を開きさらなる変更をする。
  3. [ビルド]-[すべてのビルド]を実行する。デフォルトでは、「out」サブフォルダ(訳注:binの間違いか?)を作成してそこにビルド生成物ができる。

ビルドするといろんなものができるのですが、今回はbin\Debug配下のfreeglutd.dllとfreeglutd.pdbを使います。

生成物を使ってプログラムを書く

今回はティーポットを描画するプログラムを書きました。
とはいっても数か月前に作ったフォルダに置いてあったもので、自分で書いたんだかネットで拾ってきたんだったかchatGPTに書いてもらったんだか忘れてしまいました。
冒頭で述べたように、おまけとしてopenglドライバのバージョンを吐き出すようにしました。

teapot.cpp
#include "GL/glut.h"
#include <stdio.h>

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

    glTranslatef(0.0f, 0.0f, -5.0f); // カメラ位置を調整
    glColor3f(1.0f, 0.5f, 0.0f);     // ティーポットの色
    glutSolidTeapot(1.0);            // ティーポットを描画

    glutSwapBuffers();
}

void reshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, (double)w / (double)h, 1.0, 100.0);
    glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(800, 600);
    glutCreateWindow("Teapot");

    glEnable(GL_DEPTH_TEST);

    // openglのバージョンを取得
    char *cptr;
    cptr = (char *)glGetString(GL_VERSION);
    printf(cptr);

    glutDisplayFunc(display);
    glutReshapeFunc(reshape);

    glutMainLoop();
    return 0;
}

├lib
  └freeglutd.dll
├teapot.cpp

このようにソースとライブラリを配置し、以下のコマンドでビルドします。
※x64用の開発者用コマンドプロンプトを選ぶことに注意

link test.obj /LIBPATH:lib

VSだとopengl32.dllとglu32.dllはデフォルトでリンクするようです。
mingwのgccでコンパイルする際は以下のようにします。

gcc test.cpp -L./lib -lfreeglutd -lopengl32 -lglu32

動作確認環境まとめ

最後に、動作確認した環境をまとめておきます。

  • Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.14.19
  • CMake 4.0.1
  • gcc.exe (x86_64-win32-seh-rev2, Built by MinGW-W64 project) 12.2.0
  • freeglut - 3.8.0

最後までお読みいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?