• 绘制第一个三角形


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

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

    首先我们要了解什么是着色器(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
  • 相关阅读:
    面试系列Redis:缓存穿透、击穿、雪崩的解决方案
    Python代码规范
    持安科技何艺:基于可信验证的应用访问安全模型 | CCS2023演讲分享
    1136 A Delayed Palindrome
    【ARMv7-A】——ATPCS(ARM-Thumb 过程调用标准)
    优化sql语句的一般步骤
    论文笔记:NeRF++(2020)
    【Redis系列】深入了解 Redis:一种高性能的内存数据库
    第1章 JDBC概述 & 第2章 获取数据库连接
    web前端开发技术纯静态 (12306官网 1页)
  • 原文地址:https://blog.csdn.net/dl15600383645/article/details/127741420