一个OpenGL样板程序,环境为VS2010
// Test_OpenGL.cpp : 定义控制台应用程序的入口点。
///** 1、OpenGL工具函数库(GLU),GLU函数实用glu前缀** 2、窗口系统,以支持OpenGL渲染,对于X窗口系统是GLX函数,以glX开头,* 对于Windows而言是是WGL函数库,使用wgl前缀* 对于Mac OS系统而言AGL(前缀agl)、CGL(前缀cgl)和Cocoa(NSOpenGL类)** 3、OpenGL实用工具库(Open Utility Toolkit,GLUT),使用glut前缀**/#include "stdafx.h"
#include <Windows.h>
#include <GL/glut.h>static GLfloat spin = 0.0;
static GLfloat clr_array[]={1.0, 1.23, 0.20};void init()
{glClearColor(0.0, 0.0, 0.0, 0.0);glShadeModel(GL_FLAT);
}void display(void)
{glClear(GL_COLOR_BUFFER_BIT);glPushMatrix();glRotatef(spin,0.0, 0.0, 1.0);glColor3fv(clr_array);glRectf(-25.0f, -25.0f, 25.0f, 25.0f); //画矩形glPopMatrix();glutSwapBuffers();}void spinDisplay()
{spin += 2.0;if(spin > 360.0f){spin = spin - 360.0f;}glutPostRedisplay();}void reshape(int w, int h)
{glViewport(0, 0, (GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);glMatrixMode(GL_MODELVIEW);
}void mouse(int button, int state, int x, int y)
{switch(button){case GLUT_LEFT_BUTTON:if (state == GLUT_DOWN){glutIdleFunc(spinDisplay);}break;case GLUT_RIGHT_BUTTON:if (state == GLUT_DOWN){glutIdleFunc(NULL);}break;default:break;}}
/***********************************************************************/
/* 第一个OpenGL程序, 动画=重绘+交换 */
/***********************************************************************/
int main(int argc, char* argv[])
{/*初始化*/glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);glutInitWindowPosition(100, 100);glutInitWindowSize(250, 250);glutCreateWindow(argv[0]);init();/*画图*/glutDisplayFunc(display);glutReshapeFunc(reshape);glutMouseFunc(mouse);glutMainLoop();return 0;
}