OpenGLのインストールについて
学生さんから質問があったので、おさらいがてらにメモを記述
OpenGLのインストールは以下の環境で行いました。
- OS:Windows 7 64bit
- Visual studio 2010
- OpenGLのダウンロード
以下からソースを適当なフォルダ上に落とす
Nate Robins - OpenGL - GLUT for Win32
- ダウンロードしたZipを解凍すると、以下の通り
- 32bit版
- glut.h
- glut32.dll
- glut32.lib
次のようにいれてみる。
- glut32.lib
- C:¥Program Files (x86)¥Microsoft Visual Studio 10.0¥VC¥lib\
- glut.h
- C:¥Program Files (x86)¥Microsoft Visual Studio 10.0¥VC¥include¥GL
- glut32.dll
- C:¥Windows¥system32
- (64bit)
- 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
- glut32.dll
- C:¥Windows¥SysWOW64
設定は以上。
以下のコード*1をビルドして、動けば、OK
#include <GL/glut.h> // 環境によっては<glut.h>なので,自分の環境に合わせる #include <math.h> int mouse_l = 0; int mouse_m = 0; int mouse_r = 0; int mpos[2]; // mpos[0]=xコツノク, mpos[1]=yコツノク double trans[3] = {0.0, 0.0, 0.0}; double theta[3] = {0.0, 0.0, 0.0}; double angle[3] = {0.0, 0.0, 0.0}; void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotated(angle[0], 1.0, 0.0, 0.0); // xシエ 、豼エ、ヒイセ glRotated(angle[1], 0.0, 1.0, 0.0); // yシエ 、豼エ、ヒイセ glRotated(angle[2], 0.0, 0.0, 1.0); // zシエ 、豼エ、ヒイセ glutWireCone(1.0, 2.0, 5, 10); glutSwapBuffers(); } void mouse(int button, int state, int x, int y) { switch(button){ case GLUT_LEFT_BUTTON: if(state == GLUT_DOWN){ mpos[0] = x; mpos[1] = y; mouse_l = 1; } if(state == GLUT_UP){ mouse_l = 0; } break; default: break; } } void motion(int x, int y) { if(mouse_l == 1){ theta[0] = (double)(y-mpos[1])/5.0; theta[1] = (double)(x-mpos[0])/5.0; } if(mouse_l == 1 || mouse_m == 1 || mouse_r == 1){ mpos[0] = x; // ・ワ・ソ・。、キ、ニ、、、・ネ、ュ、ホ ・゙・ヲ・ケ、ホxコツノク mpos[1] = y; // ・ワ・ソ・。、キ、ニ、、、・ネ、ュ、ホ ・゙・ヲ・ケ、ホyコツノク angle[0] += theta[0]; angle[1] += theta[1]; glutPostRedisplay(); } } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-2.0, 2.0, -2.0*(GLfloat)h/(GLfloat)w, 2.0*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho(-2.0*(GLfloat)w/(GLfloat)h, 2.0*(GLfloat)w/(GLfloat)h, -2.0, 2.0, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow(argv[0]); glutReshapeFunc(reshape); glutDisplayFunc(display); glutMouseFunc(mouse); glutMotionFunc(motion); glutMainLoop(); return 0; }
*1:すみません。。。拾いものなのですが、どこから拾ったか忘れました。。。orz