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;
}
相关推荐
CodeWithMe42 分钟前
【C/C++】std::vector成员函数清单
开发语言·c++
uyeonashi42 分钟前
【QT控件】输入类控件详解
开发语言·c++·qt
zh_xuan5 小时前
c++ 单例模式
开发语言·c++·单例模式
利刃大大7 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
喜欢吃燃面8 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked938 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
虚拟之9 小时前
36、stringstream
c++
我很好我还能学9 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
南岩亦凛汀10 小时前
在Linux下使用wxWidgets进行跨平台GUI开发
c++·跨平台·gui·开源框架·工程实战教程
曦月逸霜10 小时前
第34次CCF-CSP认证真题解析(目标300分做法)
数据结构·c++·算法