OpenGL+GLUT導入関連

OepnGLとは
2D,3Dグラフィックス用プログラムインターフェースです。
簡単に言うと、プログラミングで2D,3Dグラフィックスが描けてしまう凄いツール。

UNIX、Windows、MacといったOSで幅広く使えるAPIであり、無料で使用する事ができます。
Windowsにも標準で搭載されており、初心者でも比較的簡単に使えるという優れ物。

そこからどういったプログラムを組むかはユーザ次第。

ここでは

・OpenGLが好きだ!
・OpenGLについて語り合いたい。
・初心者だけれど使いこなしたい。
・学校で使ってるが、いまいちよくわからない。

といった、初心者~OpenGL愛好家までを対象とし、交流出来る場所を目指しています。
返信
アバター
tana
記事: 33
登録日時: 9年前

OpenGL+GLUT導入関連

#1

投稿記事 by tana » 9年前

OpenGLをやってみようと言う人のためのトピックです。
導入自体は簡単ですが、何か困ったことがあった場合などに書き込んで下さい。
また、簡単なサンプルなども是非書き込んで行ってください。

OpenGLは基本どのOSにも導入されているので、手間をかけるのはGLUTだけだと思います。
以下に導入方法を記しておきます。

GLUTダウンロード先
http://www.xmission.com/~nate/glut.html
からバイナリファイル【glut-3.7.6-bin.zip 】を入手。

これを展開すると以下の三つがあるはずです。
・glut32.dll
・glut32.lib
・glut.h

これを適切なフォルダに移動させれば完了です。
・glut32.dll:C:\Windows\System32
・glut32.lib:C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
・glut.h:C:\Program Files\Microsoft Visual Studio 10.0\VC\include\gl

VisualStudioのバージョンによっては多少変わってくる場所もありますが、基本同じですので困る事はないと思われます。
あとはソースコードを書くだけで簡単に試せます!
最後に編集したユーザー tana on 2010年11月11日(木) 02:33 [ 編集 1 回目 ]

アバター
tana
記事: 33
登録日時: 9年前

Re: OpenGL+GLUT導入関連

#2

投稿記事 by tana » 9年前

カラーバーを表示させるサンプルになります。

コード:

#include<stdio.h>
#include<gl/glut.h>

void display(void)
{
	int i;
	float c;
	
	glClear(GL_COLOR_BUFFER_BIT);
	
	glColor3f(1.0,1.0,1.0);
	glBegin(GL_LINES);
		for(i=0;i<50;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();
	
	glColor3f(1.0,1.0,0.0);
	glBegin(GL_LINES);
		for(i=50;i<100;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();
	
	glColor3f(0.0,1.0,1.0);
	glBegin(GL_LINES);
		for(i=100;i<150;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();
	
	glColor3f(0.0,1.0,0.0);
	glBegin(GL_LINES);
		for(i=150;i<200;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();
	
	glColor3f(1.0,0.0,1.0);
	glBegin(GL_LINES);
		for(i=200;i<250;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();

	glColor3f(1.0,0.0,0.0);
	glBegin(GL_LINES);
		for(i=250;i<300;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();
	
	glColor3f(0.0,0.0,1.0);
	glBegin(GL_LINES);
		for(i=300;i<350;i++)
		{
			glVertex2f(i,0);
			glVertex2f(i,300);
		}
	glEnd();
	
	glBegin(GL_POINTS);
		for(i=0;i<400;i++)
		{
			c = (float)i / 400;
			glColor3d(1.0,c,c);
			glVertex2f(i,150);
		}
	glEnd();
	
	glFlush();
}

void reshape(int w,int h)
{
	glViewport(0,0,w,h);
	glLoadIdentity();
	gluOrtho2D(0,w,0,h);
}

int main(int argc,char *argv[])
{
	glutInit(&argc,argv);
	glutInitWindowSize(400,300);
	glutCreateWindow("test");
	glutReshapeFunc(reshape);
	glutDisplayFunc(display);
	glClearColor(0,0,0,1);
	glutMainLoop();
	
	return 0;
}
添付ファイル
test.jpg
test.jpg (12.51 KiB) 閲覧数: 2735 回

アバター
tana
記事: 33
登録日時: 9年前

Re: OpenGL+GLUT導入関連

#3

投稿記事 by tana » 9年前

いきなりカラーバーを表示させるサンプルを出されても困ると思いますのでもう一つ。
display関数を以下のように置き換えると、真っ黒の画面が出ます。

コード:

void display(void)  
{  
     glClear(GL_COLOR_BUFFER_BIT);  
     glFlush();  
 }  
これはバックグラウンドカラーを設定してからなにも描画していない状態です。

バックグラウンドカラーの設定(厳密には背景の初期化)はmain関数内の

コード:

glClearColor(0,0,0,1); 
で行っていますいます。
引数は左からfloat型(厳密には等価変数)でR,G,B,透過率となっています。
試しに、RGBの値を変えて見て下さい。
オール1でBGカラーが白になるはずです。

描画の仕方などはまた週末にでも。

返信

“OpenGL” へ戻る