目标:使用OpenGL提供的函数绘制矩形、线段、三角形等基本图形元素
所需效果



实验步骤
1、配置OpenGL(详情参见OpenGL的配置)
2、头文件引入
cpp
#include <gl/glut.h>
3、编写方法体
1>矩形实现
cpp
//绘制矩形
void DisplayRectangle(void)
{
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区;
glColor3f(0.0f, 0.0f, 230.0f); //绘图颜色(蓝色)
glRectf(50.0f, 50.0f, 150.0f, 100.0f); //绘制矩形,只要设定矩形左下角点坐标(50,50)和右上角点坐标(150,100)即可
glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;
}
2>直线实现
cpp
//绘制直线
void DisplayLine(void)
{
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区;
glColor3f(1.0f, 0.0f, 0.0f); //绘图颜色(红色)
glBegin(GL_LINES); //使用glBegin,slEnd和绘制直线的常量GL_LINES
glVertex2f(50, 50); //点坐标
glVertex2f(100, 100); //点坐标
glEnd();
glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;
}
3>三角形实现
cpp
//绘制三角形
void DisplayTrainguler(void)
{
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区;
glColor3f(0.0f, 1.0f, 0.0f); //绘图颜色(绿色)
glBegin(GL_TRIANGLES); //使用glBegin,slEnd和绘制直线的常量GL_TRIANGLES
glVertex2f(50, 50); //点坐标
glVertex2f(100, 100); //点坐标
glVertex2f(150, 50); //点坐标
glEnd();
glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;
}
3、书写主函数
cpp
int main(int argc, char* argv[])
{
glutInit(&argc, argv); //初始化GLUT库;
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //设置显示模式;(缓冲,颜色类型)
glutInitWindowSize(600, 500); //绘图窗口大小
glutInitWindowPosition(100, 120); //窗口左上角在屏幕的位置
glutCreateWindow("图形绘制"); //创建窗口,标题为"图形绘制";
Initial();
glutDisplayFunc(DisplayTrainguler); //调用绘图函数三角形
//glutDisplayFunc(DisplayLine); //调用绘图函数直线
//glutDisplayFunc(DisplayRectangle); //调用绘图函数矩形
glutMainLoop(); //表示开始运行程序,用于程序的结尾;
return 0;
}