現在地 >> メニュー >> 準備編03
INDEX:準備編02 << 準備編03 >> 準備編04

glewの導入


OpenGLの拡張で追加された関数を使う場合など、エントリポイントを記述する必要がある。
面倒な場合、glewを導入するとその作業を行ってくれる。

[インストール例]
glutの導入と同様に「**.h」「**.dll」「**.lib」ファイルを適切な場所にコピーする。
(※[プロジェクト]→[プロパティ]→[構成プロパティ]→[リンカ]→[入力]
で「追加の依存ファイル」に「glew32.lib」を追加する)


使い方


glewは、最初に「glewInit()関数」で初期化する必要がある。

[例]

... ...
int main(int argc, char **argv)
{
	glutInit(&argc,argv);
	glutCreateWindow("glew");

		... ...
	GLenum err;
	err = glewInit();
	if (err != GLEW_OK){
		std::cerr << glewGetErrorString(err) << "\n"; //エラーを出力
		return -1;
	}

	glutMainLoop();

	return 0;
}
... ...

注意点


glut.hよりも先にglew.hを記述する必要がある。

サンプル


glewのバージョン、OpenGL ver1.2がサポートされているかをチェックする
#include <iostream>
#include <GL/glew.h> //先に記述する
#include <GL/glut.h>

//----------- プロトタイプ宣言 --------------//
void display();
void GLEW_CHECK();

//--------- OpenGLの初期設定 ------------//
void GLUT_INIT()
{
	glutInitDisplayMode(GLUT_RGBA);
	glutCreateWindow("Hello glew");
}

//---------- glewの初期化 -----------//
bool GLEW_INIT()
{
	GLenum err;
	err = glewInit();
	if (err != GLEW_OK){
		std::cerr << glewGetErrorString(err) << '\n';
		return false;
	}
	return true;
}

void GLUT_CALL_FUNC()
{
	glutDisplayFunc(display);
}

void MY_INIT()
{
	glClearColor(0.0, 0.0, 1.0, 1.0);
	GLEW_CHECK();
}

int main(int argc, char **argv)
{
	glutInit(&argc,argv);

	GLUT_INIT();
	GLEW_INIT(); //glewの初期化

	GLUT_CALL_FUNC();
	MY_INIT();
	glutMainLoop();
	return 0;
}

//-----------ここから各種コールバック------------//
void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glFlush();
}

void GLEW_CHECK()
{
	//glewのバージョン取得
	std::cout << "glew ver: " <<glewGetString(GLEW_VERSION) << '\n';

	//OpenGLのバージョンを取得
	std::cout << "OpenGL ver 1.2 is ";
	glewIsSupported("GL_VERSION_1_2") ? std::cout << "OK\n" : std::cout << "BAD\n"; 
}

メモ(glew32.libとglew32s.libの違い)


  • 「glew32s.lib」は「static」という意味らしく「glew.dll」が不要。
  • 「glew32.lib」は「glew.dll」を呼出すプログラムにスタティックにリンクする(らしい)。

もし「glew32s.lib」を追加依存ファイルに使う場合は、
「glew.h」をインクルードする前に「#define GLEW_STATIC」と記述する(ようだ)。


(※「LIBC.libが見つかりません」等のエラーでたら、「特定ライブラリの無視」で「LIBC.lib」を追加すると
上手くいくかもしれない)

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます