图形学中基本图元是多边形,一般要求是凸多边形,三角形是最简单的凸多边形,在图形渲染中比一般多边形其绘制速度快。今天学习OpenGL绘制三角形条带和三角形扇基础。编程环境!

1. 三角形条带

指定顶点序列,按顺序每三个顶点画一个三角形。主要是在画的时候指定参数GL_TRIANGLE_STRIP。(如顶点序列为{0,1,2,3,4,5,6,7},则0,1,2形成一个三角形,1,2,3形成一个三角形,以此类推)

#include <glut.h>
class Point2d {
public:
GLfloat x = 0.0f;
GLfloat y = 0.0f;
Point2d(const GLfloat &a, const GLfloat &b) : x(a), y(b) {}
Point2d() {}
};// GL_TRANGLE_STRIP 三角形条带
void triangles(void) {
Point2d p[];
p[] = Point2d(-0.5f, -0.8f);
p[] = Point2d(-0.35f, 0.8f);
p[] = Point2d(-0.2f, -0.8f);
p[] = Point2d(0.0f, 0.8f);
p[] = Point2d(0.2f, -0.8f);
p[] = Point2d(0.35f, 0.8f);
p[] = Point2d(0.5f, -0.8f);
p[] = Point2d(0.75f, 0.8f); glColor3f(0.38f, 1.0f, 0.2f);
glPolygonMode(GL_FRONT, GL_LINE);
glPolygonMode(GL_BACK, GL_LINE);
glLineWidth(2.0f);
glBegin(GL_TRIANGLE_STRIP);
for (int i = ; i < ; ++i) {
glVertex2f(p[i].x, p[i].y);
}
glEnd(); glFlush();
} int main(int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(, );
glutInitWindowSize(, );
glutCreateWindow("三角形条带");
glutDisplayFunc(&triangles);
glutMainLoop();
}

2. 三角形扇

指定顶点序列,第一个为顶点,后续按顺序每两个顶点与第一个顶点形成三角形,主要是在画的时候指定参数GL_TRIANGLE_FAN。(如顶点序列为{0,1,2,3,4,5,6,7},则0,1,2形成一个三角形,0,2,3形成一个三角形,0,3,4形成一个三角形,以此类推)

#include <glut.h>
class Point2d {
public:
GLfloat x = 0.0f;
GLfloat y = 0.0f;
Point2d(const GLfloat &a, const GLfloat &b) : x(a), y(b) {}
Point2d() {}
}; // 扇形
void fan(void) {
Point2d p[];
p[] = Point2d(-0.8f, 0.0f);
p[] = Point2d(0.0f, 0.8f);
p[] = Point2d(0.4f, 0.5f);
p[] = Point2d(0.7f, 0.2f);
p[] = Point2d(0.7f, -0.2f);
p[] = Point2d(0.4f, -0.5f);
p[] = Point2d(0.0f, -0.8f); glColor3f(0.38f, 1.0f, 0.2f);
glPolygonMode(GL_FRONT, GL_LINE);
glPolygonMode(GL_BACK, GL_LINE);
glLineWidth(1.0f);
glBegin(GL_TRIANGLE_FAN);
for (int i = ; i < ; ++i) {
glVertex2f(p[i].x, p[i].y);
}
glEnd(); glFlush();
} int main(int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(, );
glutInitWindowSize(, );
glutCreateWindow("三角形扇");
glutDisplayFunc(&fan);
glutMainLoop();
}

03->OpenGL多边形,glut实现三角形条带和三角形扇的更多相关文章

  1. opengl中标准矩形像素点手动网格化为三角形条带的实现

    这里以一张矩形图片为例进行说明: 一张图片的像素点是孤立的,导入opengl中进行绘制出来,看起来没问题,但是当我们放大图片时候,显示的就是一个个孤立的点,而没有像看图软件放大图片那样看起来还是连续的 ...

  2. OpenGL的GLUT初始化函数[转]

    OpenGL的GLUT初始化函数 void glutInit(int* argc,char** argv) 初始化GLUT库.对应main函数的形式应是:int main(int argc,char* ...

  3. OpenGL学习之windows下安装opengl的glut库

    OpenGL学习之windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装.  Windows环境下的GLUT下载地址:(大小约为15 ...

  4. 在mac环境下用QT使用OpenGL,glut,glfw

    只需要在新建工程中.pro文件中添加: #opengl glut LIBS+= -framework opengl -framework glut 就可以使用glut了. 继续添加: ##glfw L ...

  5. 纯CSS制作空心三角形和实心三角形及其实现原理

    纯CSS制作空心三角形和实心三角形及其实现原理 在一次项目中需要使用到空心三角形,我瞬间懵逼了.查阅了一些资料加上自己的分析思考,终于是达到了效果,个人感觉制作三角形是使用频率很高的,因此记录下来,供 ...

  6. C#中画三角形和填充三角形的简单实现

    C#中画三角形和填充三角形的简单实现: private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graph ...

  7. 第02课 OpenGL 多边形

    你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形.也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形.读完了这一课,你 ...

  8. VS2010下配置使用OpenGL的glut库

    我已在我机上测试成功,机装VS2010! 在win7(windows7 ultimate SP1)下成功安装VS2010(Visual Studio 2010 ultimate x86). 下载glu ...

  9. OpenGL的GLUT注册回调函数[转]

    OpenGL的注册回调函数 void glutDisplayFunc(void (*func)(void) ); 为当前窗口设置显示回调函数 void glutOverlayDisplayFunc(v ...

随机推荐

  1. PHP面试 PHP基础知识 八(会话控制)

    ---恢复内容开始--- PHP会话控制技术 首先了解一下为什么要使用会话控制技术? 本身web 与服务器的交互是通过HTTP协议来实现的,而HTTP协议又是无状态协议.就是说明HTTP协议没有一个內 ...

  2. 在一台机上搭建多个MYSQL并设置主从

    安装 cd /usr/local/src/ -linux2.-x86_64.tar.gz -linux2.-x86_64 /usr/local/mysql grep mysql /etc/passwd ...

  3. LCA的 Trajan 算法

    参考博客 参考博客 根据博客的模拟,就可以知道做法和思想. 现在就是实现他. 例题 :hdu  2586  题意:m 个询问,x  到  y  的距离,我们的思想就是求出:x到根的距离+y到根的距离- ...

  4. 微信小程序之评分页面

    首先给大家看看做好的效果图: 一.接下来我们说一下评分这个功能: 实际上就是一个简单的js,首先我们遍历出小星星,此时默认给的五星好评,在给他们一个点击事件,当点击时,我们获取到当前点击的是第几颗:代 ...

  5. 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录

    一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...

  6. uuencode - 对二进制文件编码

    总览 (SYNOPSIS) uuencode [-m] [ file ] name uudecode [-o outfile] [ file ]... 描述 (DESCRIPTION) Uuencod ...

  7. docker学习---搭建Docker LAMP环境

    1.环境 系统版本:CentOS Linux release 7.4.1708 docker版本:docker-ce-18.09 主机IP:192.168.121.121 2.载入MySQL和PHP镜 ...

  8. 基于nginx+tomcat部署商城系统并连接数据库

    需三台服务器nginx 192.168.200.111tomcat 192.168.200.112tomcat 192.168.200.113 192.168.200.111[root@localho ...

  9. 【JZOJ3294】【BZOJ4417】【luoguP3990】超级跳马

    description analysis 矩阵乘法好题 最朴素的\(10pts\)的\(f[i][j]\)容易\(DP\),但是是\(O(nm^2)\)的复杂度 于是把\(10\)分的\(DP\)写出 ...

  10. 将map转为Object,支持 Date/Boolean

    import lombok.extern.log4j.Log4j2; import java.lang.reflect.Field; import java.lang.reflect.Method; ...