利用 VC++OpenGL 作为开发平台设计程序,以能够在屏幕上生成任意一个像素点,利用像素点绘制基本图形菱形
#include <GL/glut.h>
#include<Windows.h>
void init (void)
{
glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);// 投影
gluOrtho2D (-5.0, 5.0, -5.0, 5.0); //设置显示的范围是X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);//模型视图
}
void drawDiamond(void) //绘制中心在原点的菱形
{
glBegin (GL_POLYGON); //顶点指定需要按逆时针方向
glVertex2f (0.0f,-2.5f);//下点
glVertex2f (1.0f,0.0f);//右点
glVertex2f (0.0f, 2.5f);//上点
glVertex2f (-1.0f,0.0f);//左点
glEnd ( );
}
void myDisplay(void)
{
glClear (GL_COLOR_BUFFER_BIT); //清空
glLoadIdentity(); //将当前矩阵设为单位矩阵
glRotatef(45,0.0,0.0,1.0);//顺时针旋转45度
glTranslatef(0.0,2.5,0.0);
glColor3f(0.0,1.0,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glRotatef(135,0.0,0.0,1.0);//顺时针旋转135度
glTranslatef(0.0,2.5,0.0);
glColor3f(0.0,1.0,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glRotatef(-45,0.0,0.0,1.0);//逆时针旋转45度
glTranslatef(0.0,2.5,0.0);
glColor3f(0.0,1.0,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glRotatef(-135,0.0,0.0,1.0);//逆时针旋转135度
glTranslatef(0.0,2.5,0.0);
glColor3f(0.0,1.0,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glColor3f(1.0,0.0,0.0);
glTranslatef(0.0,2.5,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glColor3f(1.0,0.0,0.0);
glRotatef(90,0.0,0.0,1.0);
glTranslatef(0.0,2.5,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glColor3f(1.0,0.0,0.0);
glRotatef(-90,0.0,0.0,1.0);
glTranslatef(0.0,2.5,0.0);
drawDiamond();
glLoadIdentity(); //将当前矩阵设为单位矩阵
glColor3f(1.0,0.0,0.0);
glTranslatef(0.0,-2.5,0.0);
drawDiamond();
glFlush();
}
int main (int argc, char *argv[])
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("Hello Opengl!");
init();
glutDisplayFunc (&myDisplay);
glutMainLoop ( );
return 0;
}