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;
}
相关推荐
旖-旎6 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
Darkwanderor6 小时前
对Linux的进程控制的研究
linux·运维·c++
云泽8087 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
REDcker7 小时前
libdatachannel 快速入门
c++·webrtc·datachannel
second609 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴9 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm9 小时前
linux之线程概念和控制
linux·开发语言·c++
hehelm9 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip
hansang_IR10 小时前
【记录】「SCOI2016」三道模拟赛/26.7.12
c++·算法
会周易的程序员11 小时前
从零构建多核CPU负载自适应控制系统
linux·c++·笔记·物联网·测试工具