LoadShader辅助函数

加载shader

superbible 中采用将 shader 的source 写在数组里面的方式加载,每次都要在末尾加\n和前后的"" ,比较麻烦。

写一个辅助函数来从文件中读取

#ifndef _LOAD_H
#define _LOAD_H
#include <fstream>
#include <string>
#include <iostream>
#include <sstream>
#include <sb6.h>
const int BUFFER_SIZE = 4096;
void LoadShader(const char *file, GLchar *& arg) {
    std::ifstream read_file;
    std::string result;
    read_file.open(file);
    if (!read_file){
        return;
    }
    std::string line;
    while (std::getline(read_file, line)) {
        for (std::string::iterator i = line.begin(); i != line.end(); i++) {
            result.push_back(*i);
        }
        result.push_back('\n');
    }
    arg = new GLchar[BUFFER_SIZE];  
    memcpy(arg, result.c_str(), result.size());
    arg[result.size()] = '\0';
}
#endif //load.h 

注意事项

  • 需要给arg创建一个缓冲区
  • memcpy复制之后注意要给末尾加上'\0',这样才可以使之成为合法的字符串

  • 调用中注意加个取地址符

GLchar* vertex_shader_source;
LoadShader("vertex.vert",vertex_shader_source);
glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL);

转载于:https://www.cnblogs.com/gaoduan/p/4532094.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值