opengl代码实例_OpenGL 学习笔记 - 3 着色器(综合实例,加深对VAO VBO 及顶点属性的认识)...

33020575e2daa912390d4d7574ffa947.png

前面几篇零散的讲解了许多概念,提到了很多函数,许多函数的参数很是难理解,本节用一个综合的实例讲解函数中参数的意义。实例源码来自LearnOpenGL(使用新着色器类的程序,着色器类,顶点着色器,片段着色器)。这里借用LearnOpenGL的代码,做了精简并加了中文注释。

本实例是对如下的数据点进行渲染:

GLfloat 

由于数组中不但包含位置坐标,还包含颜色数据,实例采用两个顶点属性来帮助理解之前的函数里的参数设置。

首先添加一个.h头文件,我们在其中编写一个自己的着色器类,用于主函数调用进行渲染。代码如下:

#ifndef SHADER_H 

整个着色器类只有一个构造函数、一个GLuint Program变量、一个成员函数,当构造一个着色器类时,会初始化读取顶点着色器和片段着色器文件,读取着色器文件中的着色器代码,然后编译着色器,链接成着色程序,将返回的着色程序调用的引用存储到字段Program中,调用成员函数glUseProgram(this->Program)就可以调用着色程序。

现在编写着色器文件:

顶点着色器文件 shader.vs

#version 330 core

片段着色器文件 shader.frag

#version 330 core

编写主程序,用于渲染图形:

#include 

运行结果:

3daae4851645436b2123a8dba0f67498.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值