文章目录

  • 一、绘制 GL_TRIANGLE_FAN 三角形
    • 1、绘制 3 个点的情况
    • 2、绘制 4 个点的情况
    • 3、绘制 5 个点的情况
    • 4、绘制 6 个点的情况
  • 二、相关资源

一、绘制 GL_TRIANGLE_FAN 三角形


GL_TRIANGLE_FAN 的绘制规则是 , 以第 111 个点作为顶点 , 第 1,2,31,2,31,2,3 个点组成三角形 , 第 1,3,41,3,41,3,4 个点组成第二个三角形 , 第 1,4,51,4,51,4,5 个点组成第三个三角形 ;

1、绘制 3 个点的情况

在 glBegin 和 glEnd 之间放置 333 个点 , 则绘制 1,2,31,2,31,2,3 个点 ;

代码示例 :

 // 只显示正面 , 不显示背面//glEnable(GL_CULL_FACE);// 设置顺时针方向 CW : Clock Wind 顺时针方向// 默认是 GL_CCW : Counter Clock Wind 逆时针方向 //glFrontFace(GL_CW);// 主消息循环:while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}// 渲染场景// 清除缓冲区 , // 使用之前设置的 glClearColor(1.0, 0.0, 0.0, 1.0) 擦除颜色缓冲区// 红色背景glClear(GL_COLOR_BUFFER_BIT);// 设置当前的绘制颜色 , 4 个 unsigned byte // 每个颜色的分量占一个字节// 参数数据是 R 红色 G 绿色 B 蓝色 A 透明度// 下面设置的含义是白色, 绘制点的时候, 每次都使用白色绘制glColor4ub(255, 255, 255, 255);// 设置线的宽度 glLineWidth(2.0f);//glBegin(GL_POINTS);    // 绘制点//glBegin(GL_LINES);  // 绘制线//glBegin(GL_LINE_STRIP);// 绘制前后连接的点组成的线//glBegin(GL_LINE_LOOP); // 绘制前后连接的点组成的线 , 并且收尾相连//glBegin(GL_TRIANGLES); // 绘制多个三角形//glBegin(GL_TRIANGLE_STRIP); // 绘制 GL_TRIANGLE_STRIP 三角形// 绘制三角形面glBegin(GL_TRIANGLE_FAN);// 1. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 0.0f, -10.0f);// 2. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, -2.0f, -10.0f);// 3. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(-3.0f, -2.0f, -10.0f);// 1. 2. 3. 这三个点会绘制一个三角形 // 绘制三角形结束glEnd();// 将后缓冲区绘制到前台SwapBuffers(dc);}

绘制效果 :

2、绘制 4 个点的情况

在 glBegin 和 glEnd 之间放置 444 个点 , 则 1,2,31,2,31,2,3 绘制一个三角形 , 1,3,41,3,41,3,4 绘制一个三角形 ;

代码示例 :

 // 只显示正面 , 不显示背面//glEnable(GL_CULL_FACE);// 设置顺时针方向 CW : Clock Wind 顺时针方向// 默认是 GL_CCW : Counter Clock Wind 逆时针方向 //glFrontFace(GL_CW);// 主消息循环:while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}// 渲染场景// 清除缓冲区 , // 使用之前设置的 glClearColor(1.0, 0.0, 0.0, 1.0) 擦除颜色缓冲区// 红色背景glClear(GL_COLOR_BUFFER_BIT);// 设置当前的绘制颜色 , 4 个 unsigned byte // 每个颜色的分量占一个字节// 参数数据是 R 红色 G 绿色 B 蓝色 A 透明度// 下面设置的含义是白色, 绘制点的时候, 每次都使用白色绘制glColor4ub(255, 255, 255, 255);// 设置线的宽度 glLineWidth(2.0f);//glBegin(GL_POINTS);    // 绘制点//glBegin(GL_LINES);  // 绘制线//glBegin(GL_LINE_STRIP);// 绘制前后连接的点组成的线//glBegin(GL_LINE_LOOP); // 绘制前后连接的点组成的线 , 并且收尾相连//glBegin(GL_TRIANGLES); // 绘制多个三角形//glBegin(GL_TRIANGLE_STRIP); // 绘制 GL_TRIANGLE_STRIP 三角形// 绘制三角形面glBegin(GL_TRIANGLE_FAN);// 1. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 0.0f, -10.0f);// 2. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, -2.0f, -10.0f);// 3. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(-3.0f, -2.0f, -10.0f);// 1. 2. 3. 这三个点会绘制一个三角形 // 4. 设置白色 glColor4ub(255, 255, 255, 255);glVertex3f(-1.0f, -2.0f, -10.0f);// 1. 3. 4. 这三个点会绘制一个三角形// 绘制三角形结束glEnd();// 将后缓冲区绘制到前台SwapBuffers(dc);}

绘制效果 :

3、绘制 5 个点的情况

在 glBegin 和 glEnd 之间放置 555 个点 , 则 1,2,31,2,31,2,3 绘制一个三角形 , 1,3,41,3,41,3,4 绘制一个三角形 , 1,4,51,4,51,4,5 绘制一个三角形 ;

代码示例 :

 // 只显示正面 , 不显示背面//glEnable(GL_CULL_FACE);// 设置顺时针方向 CW : Clock Wind 顺时针方向// 默认是 GL_CCW : Counter Clock Wind 逆时针方向 //glFrontFace(GL_CW);// 主消息循环:while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}// 渲染场景// 清除缓冲区 , // 使用之前设置的 glClearColor(1.0, 0.0, 0.0, 1.0) 擦除颜色缓冲区// 红色背景glClear(GL_COLOR_BUFFER_BIT);// 设置当前的绘制颜色 , 4 个 unsigned byte // 每个颜色的分量占一个字节// 参数数据是 R 红色 G 绿色 B 蓝色 A 透明度// 下面设置的含义是白色, 绘制点的时候, 每次都使用白色绘制glColor4ub(255, 255, 255, 255);// 设置线的宽度 glLineWidth(2.0f);//glBegin(GL_POINTS);    // 绘制点//glBegin(GL_LINES);  // 绘制线//glBegin(GL_LINE_STRIP);// 绘制前后连接的点组成的线//glBegin(GL_LINE_LOOP); // 绘制前后连接的点组成的线 , 并且收尾相连//glBegin(GL_TRIANGLES); // 绘制多个三角形//glBegin(GL_TRIANGLE_STRIP); // 绘制 GL_TRIANGLE_STRIP 三角形// 绘制三角形面glBegin(GL_TRIANGLE_FAN);// 1. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 0.0f, -10.0f);// 2. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, -2.0f, -10.0f);// 3. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(-3.0f, -2.0f, -10.0f);// 1. 2. 3. 这三个点会绘制一个三角形 // 4. 设置白色 glColor4ub(255, 255, 255, 255);glVertex3f(-1.0f, -2.0f, -10.0f);// 1. 3. 4. 这三个点会绘制一个三角形// 5. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(1.0f, -2.0f, -10.0f);// 1. 3. 5. 这三个点会绘制一个三角形// 绘制三角形结束glEnd();// 将后缓冲区绘制到前台SwapBuffers(dc);}

运行效果 :

4、绘制 6 个点的情况

在 glBegin 和 glEnd 之间放置 666 个点 , 则 1,2,31,2,31,2,3 绘制一个三角形 , 1,3,41,3,41,3,4 绘制一个三角形 , 1,4,51,4,51,4,5 绘制一个三角形 , 1,5,61,5,61,5,6 绘制一个三角形 ;

代码示例 :

     // 渲染场景// 清除缓冲区 , // 使用之前设置的 glClearColor(1.0, 0.0, 0.0, 1.0) 擦除颜色缓冲区// 红色背景glClear(GL_COLOR_BUFFER_BIT);// 设置当前的绘制颜色 , 4 个 unsigned byte // 每个颜色的分量占一个字节// 参数数据是 R 红色 G 绿色 B 蓝色 A 透明度// 下面设置的含义是白色, 绘制点的时候, 每次都使用白色绘制glColor4ub(255, 255, 255, 255);// 设置线的宽度 glLineWidth(2.0f);//glBegin(GL_POINTS);  // 绘制点//glBegin(GL_LINES);  // 绘制线//glBegin(GL_LINE_STRIP);// 绘制前后连接的点组成的线//glBegin(GL_LINE_LOOP); // 绘制前后连接的点组成的线 , 并且收尾相连//glBegin(GL_TRIANGLES); // 绘制多个三角形//glBegin(GL_TRIANGLE_STRIP); // 绘制 GL_TRIANGLE_STRIP 三角形// 绘制三角形面glBegin(GL_TRIANGLE_FAN);// 1. 设置白色 , glVertex3f (GLfloat x, GLfloat y, GLfloat z)glColor4ub(255, 255, 255, 255);glVertex3f(0.0f, 0.0f, -10.0f);// 2. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(-5.0f, -2.0f, -10.0f);// 3. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(-3.0f, -2.0f, -10.0f);// 1. 2. 3. 这三个点会绘制一个三角形 // 4. 设置白色 glColor4ub(255, 255, 255, 255);glVertex3f(-1.0f, -2.0f, -10.0f);// 1. 3. 4. 这三个点会绘制一个三角形// 5. 设置绿色 glColor4ub(0, 255, 0, 255);glVertex3f(1.0f, -2.0f, -10.0f);// 1. 4. 5. 这三个点会绘制一个三角形// 6. 设置蓝色glColor4ub(0, 0, 255, 255);glVertex3f(3.0f, -2.0f, -10.0f);// 1. 5. 6. 这三个点会绘制一个三角形// 绘制三角形结束glEnd();// 将后缓冲区绘制到前台SwapBuffers(dc);}

绘制效果 :

二、相关资源


GitHub 地址 : https://github.com/han1202012/OpenGL
( GitHub 源码始终都会随着后续博客的进度更新覆盖 , 可能没有本博客的相关源码 , 推荐下载博客源码快照 ) ;

博客源码快照 : https://download.csdn.net/download/han1202012/14777770

【OpenGL】十五、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_FAN 三角形扇 )相关推荐

  1. 【Python学习系列二十五】数据结构-有向图绘制

    1.场景:从文件中读取节点.有向边,然后绘制. 2.参考代码: # -*- coding: utf-8 -*-import networkx as nx import matplotlib.pyplo ...

  2. PyQT5 (二十五) 绘图API: 绘制不同类型的直线 的案例drawLine()

    绘图API: 绘制不同类型的直线 的案例 import math import sys from PyQt5.QtCore import Qt, QRegExp, QDir from PyQt5.Qt ...

  3. 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )

    文章目录 一.绘制 GL_TRIANGLE_STRIP 三角形 二.GL_TRIANGLE_STRIP 三角形绘制分析 三.相关资源 一.绘制 GL_TRIANGLE_STRIP 三角形 该模式绘制首 ...

  4. WIN32 opengl三角形绘制

    #include "stdafx.h" #include "Win32Project1.h" #include "glut.h"#defin ...

  5. 【OpenGL】十八、OpenGL 绘制多边形 ( 绘制 GL_POLYGON 模式多边形 )

    文章目录 一.绘制 GL_POLYGON 模式多边形 二.多边形绘制顺序分析 三.相关资源 一.绘制 GL_POLYGON 模式多边形 使用 glBegin(GL_POLYGON) 设置绘制多边形 , ...

  6. 【OpenGL】十九、OpenGL 绘制模式 ( 绘制线框模式 | 绘制点模式 )

    文章目录 一.绘制线框模式 二.绘制点模式 三.绘制点模式 ( 圆点 ) 四.相关资源 一.绘制线框模式 使用 glPolygonMode(GL_FRONT, GL_LINE) 设置当前的绘制模式是线 ...

  7. 【OpenGL】十六、OpenGL 绘制四边形 ( 绘制 GL_QUADS 四边形 )

    文章目录 一.绘制 GL_QUADS 四边形 二.绘制多个四边形 三.相关资源 一.绘制 GL_QUADS 四边形 四边形绘制时 , 在 glBegin 方法中传入 GL_QUADS 参数 , 其绘制 ...

  8. 现代OpenGL教程(一):绘制三角形(imgui+OpenGL3.3)

    前言:imgui 是一个开源的GUI框架,自带的例子里面直接集成了glfw+gl3w环境,本例使用的版本是imgui v1.61,下载地址:https://github.com/ocornut/img ...

  9. 【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )

    文章目录 一.绘制三角形 二.三角形绘制顺序 1.绘制正面 2.三个点逆时针方向排列 3.三个点顺时针方向排列 4.设置点的正面方向 三.绘制多个三角形 四.相关资源 一.绘制三角形 三角形绘制即绘制 ...

最新文章

  1. Nignx平滑升级(1.8.0-1.8.1)
  2. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
  3. 用公众号获取 任意公众号文章列表 软件还是免费
  4. 【dfs】无穷迷宫(jzoj 3924)
  5. word之八大文本替换技巧
  6. PL/SQL Developer 导入外部文件数据
  7. vue之神奇的动态按钮
  8. Linux下C++可视化调试神器vgdb
  9. Matlab函数——dct2
  10. 在.net中序列化读写xml方法的总结
  11. 基于案例学SQL优化-全套视频教程免费下载
  12. Python可视化库
  13. java如何运行_如何运行java程序
  14. 语义表示——神经网络与深度学习
  15. 计算机在化学中论文3000字,化学论文范文3000字_化学论文发表
  16. [NPUCTF2020]碰上彩虹,吃定彩虹
  17. 【路科V0】systemVerilog基础3——字符串类型
  18. 单片机实现模块化编程:思维+实例+系统教程(实用程度令人发指)
  19. oracle dul 12.2.0.2.4 测试
  20. 牛客-判断一个链表是否为回文结构

热门文章

  1. 浏览器根据什么来判定脚本失控?
  2. TP5 行为Behavior用法说明
  3. beego07----web博客
  4. 2017/05/07 java 基础 随笔
  5. 有36个人,36块砖,每人搬了一次,正好搬完。 其中男每人每次搬4块,女每人每次搬3块,小孩两人每次搬一块。问 男、女、小孩各多少人?...
  6. sql语句的进化--原始篇
  7. 12 Useful Tips for Machine Learning (转载)
  8. 2011.8.2号面试
  9. ASP.NET操作Word文档(转)
  10. Fastcgi 协议解析及 getpost 使用实例