当前位置: 首页 > news >正文

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

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

所需效果

实验步骤

1、配置OpenGL(详情参见OpenGL的配置)
2、头文件引入
#include <gl/glut.h>
3、编写方法体
1>矩形实现
//绘制矩形
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>直线实现
//绘制直线
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>三角形实现
//绘制三角形
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、书写主函数
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;
}

相关文章:

  • conda install 和 pip install 的区别
  • 【Java篇】行云流水,似风分岔:编程结构中的自然法则
  • EasyCVR安防视频汇聚平台助力工业园区构建“感、存、知、用”一体化智能监管体系
  • 【公务员考试】高效备考指南
  • 交互式调度算法学不会?————一文学懂(RR(时间片轮转调度算法),优先级调度算法,多级反馈队列调度算法)保姆式解析
  • 【第五节】windows sdk编程:windows 控件基础
  • S_on@atwk的意思
  • k8s基础架构介绍
  • 【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分
  • SQL Server查询优化
  • kali之netdiscover
  • Odoo18 Http鉴权+调用后端接口
  • 用于开发摆线齿轮成形磨削砂轮截形计算程序的 Python 示例
  • 基于 Java 的电商业务秒杀商品高并发、数据一致性、系统性能等多个方面设计方案
  • 【Nacos】服务发布之优雅预热上线方案
  • ArcGIS Pro将有文字标注底图切换为无标注底图(在线地图图源)
  • ubuntu20.04装nv驱动的一些坑
  • Java高频面试之集合-12
  • 「BigBig AGI 1.0 Demo 」来袭!揭示 AI 灵魂奥秘
  • STM32 RS232通信开发全解析 | 零基础入门STM32第五十九步
  • 佩斯科夫:俄方代表团15日将在伊斯坦布尔等候乌克兰代表团
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 国内首家破产的5A景区游客爆满,洛阳龙潭大峡谷:破产并非因景观不好
  • GDP逼近五千亿,向海图强,对接京津,沧州剑指沿海经济强市
  • 乌拉圭前总统何塞·穆希卡去世
  • 内塔尼亚胡:以军将在未来几天“全力进入”加沙