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;
}
相关推荐
清 澜13 分钟前
c++高频知识点总结 第 1 章:语言基础与预处理
c++·人工智能·面试
fqbqrr32 分钟前
2601C++,模块基础
c++
带土132 分钟前
6. C++智能指针(1)
开发语言·c++
星火开发设计44 分钟前
C++ queue 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识·队列
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——力扣 394 题:字符串解码
数据结构·c++·结构与算法
new_zhou1 小时前
vs2019+qt工程中生成dump文件及调试
开发语言·qt·visual studio·dump调试
txinyu的博客2 小时前
结合游戏场景理解,互斥锁,读写锁,自旋锁,CAS / 原子变量,分段锁
开发语言·c++·游戏
hugerat2 小时前
在AI的帮助下,用C++构造微型http server
linux·c++·人工智能·http·嵌入式·嵌入式linux
-森屿安年-2 小时前
unordered_map 和 unordered_set 的实现
数据结构·c++·散列表
九久。2 小时前
手动实现std:iterator/std:string/std::vector/std::list/std::map/std:set
c++·stl