一個簡單的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
//<br />// tutorial_01.c<br />//<br />// 記憶體流失檢測<br />// 在需要檢測的地方放置語句:<br />// _CrtDumpMemoryLeaks();<br />// 以下3句的次序不能改變<br />#define _CRTDBG_MAP_ALLOC<br />#include<stdlib.h><br />#include<crtdbg.h></p><p>#include<stdio.h><br />#include<string.h><br />#include<math.h><br />#include<assert.h></p><p>#include <windows.h></p><p>// 使用 USE_SGI_OPENGL 可能在某些機器上運行 wglMakeCurrent 系列函數返回失敗的結果<br />#define GLUT_NO_LIB_PRAGMA</p><p>// #define USE_SGI_OPENGL<br />#ifdef USE_SGI_OPENGL<br />#include "../../sgi-opengl2-sdk/include/gl/gl.h"<br />#include "../../sgi-opengl2-sdk/include/gl/glu.h"<br />#include "../../sgi-opengl2-sdk/include/gl/glut.h"</p><p>#pragma comment(lib, "../../sgi-opengl2-sdk/lib/opengl.lib")<br />#pragma comment(lib, "../../sgi-opengl2-sdk/lib/glu.lib")<br />#pragma comment(lib, "../../sgi-opengl2-sdk/lib/glut.lib")<br />#else<br />#include "../../win-opengl32/inc/GL.h"<br />#include "../../win-opengl32/inc/GLU.h"</p><p>#pragma comment(lib, "../../win-opengl32/lib/OPENGL32.lib")<br />#pragma comment(lib, "../../win-opengl32/lib/GLU32.lib")</p><p>#include "../../win-opengl32/inc/GLUT.h"<br />#pragma comment(lib, "../../win-opengl32/lib/glut32.lib")<br />#endif</p><p>void _display(void)<br />{<br /> glClear (GL_COLOR_BUFFER_BIT);<br /> glColor3f (1.0, 1.0, 1.0);<br /> glBegin(GL_POLYGON);<br /> glVertex3f (0.25, 0.25, 0.0);<br /> glVertex3f (0.75, 0.25, 0.0);<br /> glVertex3f (0.75, 0.75, 0.0);<br /> glVertex3f (0.25, 0.75, 0.0);<br /> glEnd();<br /> glFlush ();<br />}</p><p>void _init (void)<br />{<br /> glClearColor (0.0, 0.0, 0.0, 0.0);<br /> glMatrixMode(GL_PROJECTION);<br /> glLoadIdentity();<br /> glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);<br />}</p><p>int main(int argc, char** argv)<br />{<br /> glutInit(&argc, argv);<br /> glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);<br /> glutInitWindowSize (250, 250);<br /> glutInitWindowPosition (100, 100);<br /> glutCreateWindow ("hello");<br /> _init ();<br /> glutDisplayFunc(_display);<br /> glutMainLoop();</p><p> _CrtDumpMemoryLeaks();<br /> return 0;<br />}
運行結果: