Opengl Shader的初步使用

主要是按照Opengl的网站学习的Shader文件读取和使用

VertexShader.vs

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
out vec3 ourColor;
uniform float xOffset;
//输出顶点给片元着色器
out vec3 selfPos;
void main()
{
   //向左偏移,倒置三角形
   gl_Position = vec4(aPos.x - xOffset, -aPos.y,aPos.z, 1.0);
   ourColor = aColor;
   selfPos = aPos;
};

FragmentShader.fs

#version 330 core
out vec4 FragColor;
in vec3 ourColor;
in vec3 selfPos;
void main()
{
   //FragColor = vec4(ourColor, 1.0f);
   FragColor = vec4(selfPos, 1.0f);
};

Shader.h

#ifndef SHADER_H
#define SHADER_H

#include <glad/glad.h>; // 包含glad来获取所有的必须OpenGL头文件

#include <string>
#include <fstream>
#include <sstream>
#include <iostream>

using namespace std;

class Shader
{
public:
	Shader();
	~Shader();
	// 程序ID
	unsigned int ID;

	// 构造器读取并构建着色器
	Shader(const GLchar* vertexPath, const GLchar* fragmentPath) 
	{
		string vertexCode;
		string fragmentCode;

		ifstream vShaderFile;
		ifstream fShaderFile;
		//保证ifstream对象可以抛出异常:
		vShaderFile.exceptions(ifstream::failbit | ifstream::badbit);
		fShaderFile.exceptions(ifstream::failbit | ifstream::badbit);
		try
		{
			vShaderFile.open(vertexPath);
			fShaderFile.open(fragmentPath);
			stringstream vShaderStream, fShaderStream;
			//实现一个流对象指向的内容用另一个流对象来输出
			vShaderStream << vShaderFile.rdbuf();
			fShaderStream << fShaderFile.rdbuf();
			vShaderFile.close();
			
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值