• 绘制第一个三角形


    上一篇文章已经成功的搭建了环境,传送门:环境搭建。并成功的运行了第一个例子——动态改变背景颜色。

    本篇要学习怎么在屏幕上绘制点和三角形

    首先我们要了解什么是着色器(shader)

    顾名思义啊,着色器就是用来着色的工具(这不废话嘛!)

    OpenGL是通过以固定函数作为‘胶水’连接多个着色器的小程序来工作的。不管要绘制点什么,我们总要编写一对着色器。

    OpenGL的着色器是以OpenGL着色语言(GLSL)进行编写的,该语言源于C。

    将着色器的源代码放入到着色对象中并进行编译,然后多个着色对象链接到一起生成一个程序对象。每个程序对象包含一个或多个着色器阶段的多个着色器。

    而OpenGL的着色器阶段包括顶点着色器细分曲面控制和评价着色器几何着色器片段着色器计算着色器。然而最最最最基本的管线配置只有一个顶点着色器,如果要显示到屏幕上,还需要一个片段着色器

    上面我们提到了三个东西,着色器着色对象程序对象,我理解的他们的关系如下图所示

     按照上面描述的来编写着色器,我们要写两个着色器,一个是顶点着色器,一个是片段着色器,因为要显示到屏幕上,所以必须有片段着色器

    1.第一个顶点着色器

    1. //这条语句是声明 想要着色编译器使用着色语言的4.5版本
    2. //core 关键字表示我们只想用OpenGL核心模式所支持的特性
    3. #version 450 core
    4. void main(void) {
    5. gl_Position = vec4(0.0, 0.0, 0.5, 1.0); //gl_Position表示顶点的输出位置
    6. }

     跟普通C函数没有太大区别,不同的是GLSL着色器的main没有参数;函数内给gl_Position进行赋值,gl_Position是连接着色器至OpenGL其余部分的纽带。

    所有以gl_开头的变量都是OpenGL的一部分

    2.第一个片段着色器

    与顶点着色器写法大致相同

    1. #version 450 core
    2. out vec
  • 相关阅读:
    使用Nginx来实现限流
    Mysql递归测试
    为什么说企业内部管理需要ERP系统
    mysql中的函数
    2022CTF培训(一)脱壳技术&Hook入门
    [附源码]计算机毕业设计springboot社区疫情防控信息管理系统
    【UniApp】-uni-app-全局数据和局部数据
    当我们的执行 java -jar xxx.jar 的时候底层到底做了什么?
    汽车品牌查询及车型大全查询
    java毕业设计《数据结构与算法》网上教学系统mybatis+源码+调试部署+系统+数据库+lw
  • 原文地址:https://blog.csdn.net/dl15600383645/article/details/127741420