bussorenre Laboratory

hoge piyo foo bar

OpenGLを使ってみるテストその1

こんにちはの方も、おはようございますの方も、とりあえずようこそ。ブログ連日更新は珍しいぶっそれんれです(`・ω・´)

とりあえずこの記事は自分用メモなので、OpenGLでぐぐってこのページが出てきてしまった人は、まずは焦らずに、落ち着いてから左上の矢印ボタンを押してほしい。








ふぅ、

というわけで、OpenGLをすることになりました。本当はJavaでやりたかったんだけど、やっぱし私はJava嫌い(←主観100%)なので、C++OpenGLを組んでいこうと思います。

まず、今回使用する環境ですが、Windows7+Visual Studio 2008です。Ubuntuが復活し大、Ubuntu10.10+Eclipseでもやります。ってわけで、まずはOpenGLをダウンロードですね。

さて、問題はGLUTなんですが、こいつが定義されたのが非常に古いのです。さて、入門向けレベルのGLUTでどこまでいけるか、まぁ、機能的にしんどくなったらGLUTを捨てて、windows interface等のAPI処理をガリガリ書いていこうと思います。

今回はWindowsで構築します。まず、GLUTを落とします。
http://www.xmission.com/~nate/glut.html

さて、普通に「win32 コンソールアプリケーション」でVisual Stduioでプロジェクトを作って、そのフォルダの中に出てきた「glut.h」「glut.dll」「glut.lib」をコピーします。どうやらGLUTが勝手にリンクしてくれるみたいです。超便利。

さて、とりあえずウィンドウを呼び出すための最小限のコードを書きますか。

#include "glut.h"
#include <stdio.h>

void display()
{
    // 画面をクリアして、それを描画(つまり何もしない)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glFlush();
    return;
}

// entry point.
int main()
{
    // 画面モードの設定
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);

    // 窓の設定
    glutInitWindowPosition(0,0);    // 場所(X,Y)
    glutInitWindowSize(400,400);    // 横幅、縦幅
    glutCreateWindow("ウィンドウタイトルです(`・ω・´)");

    // 描画関係の関数を指定
    glutReshapeFunc(NULL);          // 再描画関数の指定
    glutDisplayFunc(display);       // 通常描画関数の指定

    // メインループ突入
    glutMainLoop();

    return 0;
}

特に説明はいりませんかね。ソースコードにいっぱいコメント書いたし。
画面モードの設定も、DirectXと名前が違うだけで内容は一緒ですね。シングルバッファ、RGBAモード、深度バッファ付き。って感じですかね。

画面のクリアの時も、色情報の削除、深さ情報の削除って感じですかね。何を言っているのかわかりませんよねさーせんwww

あーやっぱDirectX大好き……。けどGLUTも便利すぎ大好き……。

さて、問題は、コンソールが出力されてしまうことなんですよね……。デバッグ時にエラー情報を表示させるには最高なんですが、実際に配布する際はファイルに落としたいですよね。ってわけで、素直にWin32プロジェクトで作り直すとうまいこと動きます。特に問題ないですね。


初期化は以上。次からポリゴン書いてみる。