GLAUX から OpenGL の使用例。
- 必要なファイル
- ここから、glaux.libとglaux.dllを取得。glaux.hがInclude/Glディレクトリにない場合は、ここから取得。
glaux.libはC:\borland\bcc55\Lib\PSDKに配置。glaux.dllはC:\borland\bcc55\Binに配置。glaux.hはC:\borland\bcc55\Include\Glに配置。
- 参考サイト
- OpenGL Win32 Tutorial
OpenGL (3D グラフィックス)
Visual C TechTips
http://64.233.179.104/search?q=cache:wMA0FX_fN2UJ:miso.ice.ous.ac.jp/~oka/opengl/section05.html+AUX_DOUBLE&hl=ja&gl=jp&ct=clnk&cd=1&lr=lang_ja&client=firefox
- ソースコード
-main.h
#include <windows.h> #include <Gl/gl.h> #include <Gl/glu.h> #include <Gl/glaux.h> #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 480 #define WINDOW_TITLE "OpenGL with GLAUX."
-main.cpp
#include "main.h"
#include "CGlUtil.h"
int main(int argc, char ** argv) {
CGlUtil *glUtil = new CGlUtil();
glUtil->GlMainProc();
delete glUtil;
return 0;
}
-CGlUtil.h
#include "main.h"
class CGlUtil {
public:
CGlUtil();
~CGlUtil();
void GlMainProc(void);
private:
static GLfloat eye[];
void GlInit(void);
static void CALLBACK GlDisplay(void);
static void CALLBACK GlReshape(GLint, GLint);
};
-CGlUtil.cpp
#include "CGlUtil.h"
GLfloat CGlUtil::eye[] = {40.0, 10.0, 20.0};
CGlUtil::CGlUtil() {
}
CGlUtil::~CGlUtil() {
}
void CGlUtil::GlMainProc(void) {
auxInitDisplayMode(AUX_DOUBLE | AUX_RGBA | AUX_DEPTH);
auxInitPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
auxInitWindow(WINDOW_TITLE);
GlInit();
auxReshapeFunc(GlReshape);
auxMainLoop(GlDisplay);
}
void CGlUtil::GlInit(void) {
GLfloat light_position[] = {100.0, 100.0, 100.0, 0.0};
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
}
void CALLBACK CGlUtil::GlDisplay(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(eye[0], eye[1], eye[2], 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
auxSolidCylinder(1.0, 2.0);
glFlush();
auxSwapBuffers();
}
void CALLBACK CGlUtil::GlReshape(GLint w, GLint h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(10.0, (GLfloat)w/(GLfloat)h, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
}