« OpenGL 準備編 | メイン | Blender 2.8 のタイムラインの長さのマウスによる変更について »

2018年11月14日 (水)

OpenGL 最初の一歩

前回の続きです。

まず、新しいプロジェクトを作ります。テスト版の作業です。
メニューから「ファイル」-「新しいプロジェクト」とクリックして、出てきたウィンドウの
場所を
..¥Visual Studio 2013¥OpenGL¥
名前を test0 とし
上部の選択肢から「インストール済み」-「テンプレート」-「visual C++」
-「CLR」と展開して「CLR コンソール アプリケーション」をクリックして
「OK」をクリックしてください。
(「コンソール アプリケーション」でなくする方法は、後述します。)

以下のソースを test0.cpp にコピペしてください。
----
#include "stdafx.h"
#include <gl/freeglut.h>

void display(void)
{
  glClear(GL_COLOR_BUFFER_BIT);
  glFlush();
}

void initGL(void)
{
  glClearColor(0.0, 0.0, 1.0, 1.0);
}

int main(int argc, char *argv[])
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_RGBA);
  glutCreateWindow(argv[0]);
  glutDisplayFunc(display);
  initGL();
  glutMainLoop();
  return 0;
}
----

#include <gl/glut.h>
ではなく
#include <gl/freeglut.h>
でなくてはならないといけません。
「include ファイルを開けません。'gl/glut.h':No such file or directory」という
エラーメッセージに、私はこれで2日悩みました。

また #include "stdafx.h" というのはすべてのインクルードファイルの
前に記述しなければならないそうです。

そしてビルドしてみてください。 win32 か x64 にどちらか
環境にあった方にしてください。
Releases/Debug はどちらでも構いません。両方ビルドしても構いません。

そして問題なくビルドされたら、メニューから「デバッグ」-「デバッグなしで開始」
してみてください。青い四角いウィンドウが表示されたら成功です。

しかしコンソール画面も表示されるのはじゃまです。
これを表示しないようにしてみたいと思います。まず
int	main(int argc, char *argv[]) を
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
	LPSTR lpszCmdLine, int nShowCmd) に書き換えます。
そして argc, argv を __argc, __argv に書き換えます。
(元の main 関数を /* */ でコメントして、コピペで書き直すと
いいかもしれません。)

すると以下のようになります。
----
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
	LPSTR lpszCmdLine, int nShowCmd) {
	glutInit(&__argc, __argv);
	glutInitDisplayMode(GLUT_RGBA);
	glutCreateWindow(__argv[0]);
	glutDisplayFunc(display);
	initGL();
	glutMainLoop();
	return 0;
}
----
そして右側の ソリューション エクスプローラ の test0 (プロジェクト)を
右クリックして「プロパティ」-「構成プロパティ」-「リンカー」-「システム」
と開いて「サブシステム」の右端へマウスを持っていって、クリック、下向き記号が
あらわれたらそれをクリック、 Windows(/SUBSYSTEM:WINDOWS) を選択、

そしてビルドし直し、メニューから「デバッグ」-「デバッグなしで開始」を
実行、以上です。

トラックバック

このページのトラックバックURL:
http://app.synapse-blog.jp/t/trackback/563545/34151762

OpenGL 最初の一歩を参照しているブログ:

コメント

コメントを投稿