LearnOpenGL:Shader(下)写shader

这篇博客介绍了如何使用C++文件流(file streams)读取OpenGL着色器内容,通过创建Shader类,利用ifstream从硬盘读取文件到内存,经过一系列转化,将内容存储到字符串中,以便OpenGL能够识别。文章详细阐述了文件流的作用以及在处理shader文件时涉及的缓冲区和字符串转换的过程,并展示了具体代码实现。
摘要由CSDN通过智能技术生成

我们使用C++文件流(file stream)读取着色器内容,储存到几个string对象里

右键源文件 新建 添加 新建项 选择C++类 名字改为Shader
这样之后,会出现Shader.h和Shader.cpp两个文件

在c++中 如果不宣告并定义的话 你将无法在main中使用这个函数

现在这个 .h*与 .cpp*的分页的意义是 把所有的宣告 全部都放入到.h*的文档里 .cpp*里只用写程式码不用考虑是否有宣告过

首先来看一下shader 的宣告

  • 在h文件中,最开始会是这样,因为今天的内容很简单 不需要释放内存 所以只用使用 构造函数就可以 (文中shader 代表构造和析构函数)
  • 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
  • 析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。
  • #pragma once
    class Shader
    {
    	public:
    		Shader();
    		//~Shader();
    };
    
    

    先传入档名

  • Shader(const char* vertexPath, const char* fragmentPath)

    char* 读取档名   

  • const 是因为 下面要是用“ 档名”的形式 写死 所以要使用const修饰 不然容易报错

  • 写完之后 需要复制到 .cpp中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值