一个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;
}