OpenGL中绘制图形元素的实现(使用visual studio(C++)绘制一个矩形)

目标:使用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;
}
相关推荐
虾球xz14 分钟前
CppCon 2018 学习:THE MOST VALUABLE VALUES
开发语言·c++·学习
2401_881244402 小时前
牛客周赛99
c++
山登绝顶我为峰 3(^v^)35 小时前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
十五年专注C++开发8 小时前
CMake基础:条件判断详解
c++·跨平台·cmake·自动化编译
QuantumStack10 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
天若有情67310 小时前
01_软件卓越之道:功能性与需求满足
c++·软件工程·软件
whoarethenext10 小时前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc
Jay_51511 小时前
C++多态与虚函数详解:从入门到精通
开发语言·c++
xiaolang_8616_wjl12 小时前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
FrostedLotus·霜莲13 小时前
C++主流编辑器特点比较
开发语言·c++·编辑器