一个简单的OpenGL程序
cheungmine
2009-2
这是一个Windows控制台程序,建立一个空项目,把下面的文件添加进去,编译即可。需要更改的是路径“../../???”。
依存的库目录
+--- win_opengl32/
|
+--- inc/
| |--- GL.h,GLU.h,GLUT.h
|
+--- lib/
| |--- GlU32.Lib,OpenGL32.Lib,glut32.lib,glut.def
|
+--- bin/
|--- glu32.dll,glut32.dll,opengl32.dll
//
// tutorial_01.c
//
// 内存泄漏检测
// 在需要检测的地方放置语句:
// _CrtDumpMemoryLeaks();
// 以下3句的次序不能改变
#define _CRTDBG_MAP_ALLOC
#include<stdlib.h>
#include<crtdbg.h>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<assert.h>
#include <windows.h>
// 使用 USE_SGI_OPENGL 可能在某些机器上运行 wglMakeCurrent 系列函数返回失败的结果
#define GLUT_NO_LIB_PRAGMA
// #define USE_SGI_OPENGL
#ifdef USE_SGI_OPENGL
#include "../../sgi-opengl2-sdk/include/gl/gl.h"
#include "../../sgi-opengl2-sdk/include/gl/glu.h"
#include "../../sgi-opengl2-sdk/include/gl/glut.h"
#pragma comment(lib, "../../sgi-opengl2-sdk/lib/opengl.lib")
#pragma comment(lib, "../../sgi-opengl2-sdk/lib/glu.lib")
#pragma comment(lib, "../../sgi-opengl2-sdk/lib/glut.lib")
#else
#include "../../win-opengl32/inc/GL.h"
#include "../../win-opengl32/inc/GLU.h"
#pragma comment(lib, "../../win-opengl32/lib/OPENGL32.lib")
#pragma comment(lib, "../../win-opengl32/lib/GLU32.lib")
#include "../../win-opengl32/inc/GLUT.h"
#pragma comment(lib, "../../win-opengl32/lib/glut32.lib")
#endif
void _display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glFlush ();
}
void _init (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
_init ();
glutDisplayFunc(_display);
glutMainLoop();
_CrtDumpMemoryLeaks();
return 0;
}
运行结果: