|
盖莫游戏引擎2.1.2 GLSL+Light
这几天忙着做项目 引擎进度缓慢
先上封转的GLSL吧(这个是从网上找的一段代码修改的)
如下:
////////////////////////////////////////////////////////////
/// GL着色器基类
////////////////////////////////////////////////////////////
class GLSLShader : public Object
{
public:
////////////////////////////////////////////////////////
/// 构造,析构GL着色器
////////////////////////////////////////////////////////
GLSLShader();
virtual ~GLSLShader();
////////////////////////////////////////////////////////
/// 着色器编译,检测是否编译
////////////////////////////////////////////////////////
virtual bool Compile() = 0;
virtual bool IsCompiled() const = 0;
////////////////////////////////////////////////////////
/// 获取着色器日志
////////////////////////////////////////////////////////
virtual void GetShaderLog(engine_string &log) const = 0;
////////////////////////////////////////////////////////
/// 获取,设置着色器数据
////////////////////////////////////////////////////////
virtual void GetShaderSource(engine_string &shader) const = 0;
virtual void SetShaderSource(engine_string &code) = 0;
////////////////////////////////////////////////////////
/// 获取着色器句柄(标号)
////////////////////////////////////////////////////////
virtual GLuint GetHandle() const = 0;
////////////////////////////////////////////////////////
/// 获取着色器参数
////////////////////////////////////////////////////////
virtual void GetParameter(GLenum param, GLint *data) const = 0;
private:
DECLARE_OBJECT(GLSLShader)
};
////////////////////////////////////////////////////////////
/// 定义引擎GLSL着色程序
////////////////////////////////////////////////////////////
class GLSLProgram : public Object
{
public:
////////////////////////////////////////////////////////
/// 构造,析构GL着色程序
////////////////////////////////////////////////////////
GLSLProgram();
virtual ~GLSLProgram();
////////////////////////////////////////////////////////
/// 链接,卸载着色程序
////////////////////////////////////////////////////////
virtual void Attach(const RefPtr<GLSLShader> &shader) = 0;
virtual void Detach(const RefPtr<GLSLShader> &shader) = 0;
////////////////////////////////////////////////////////
/// 链接着色程序
////////////////////////////////////////////////////////
virtual bool Link() = 0;
////////////////////////////////////////////////////////
/// 启用,禁止着色程序
////////////////////////////////////////////////////////
virtual void Begin() const = 0;
virtual void End() const = 0;
////////////////////////////////////////////////////////
/// 设置着色程序参数
////////////////////////////////////////////////////////
virtual void SendUniform(const engine_string &name, float x) = 0;
virtual void SendUniform(const engine_string &name, float x, float y) = 0;
virtual void SendUniform(const engine_string &name, float x, float y, float z) = 0;
virtual void SendUniform(const engine_string &name, float x, float y, float z, float w) = 0;
virtual void SendUniform(const engine_string &name, int x) = 0;
virtual void SendUniform(const engine_string &name, int x, int y) = 0;
virtual void SendUniform(const engine_string &name, int x, int y, int z) = 0;
virtual void SendUniform(const engine_string &name, int x, int y, int z, int w) = 0;
virtual void SendUniform(const engine_string &name, float *m, bool transp = false, int size = 4) = 0;
////////////////////////////////////////////////////////
/// 设置指定位置的着色程序参数
////////////////////////////////////////////////////////
virtual void SendUniform(GLuint location, float x) = 0;
virtual void SendUniform(GLuint location, float x, float y) = 0;
virtual void SendUniform(GLuint location, float x, float y, float z) = 0;
virtual void SendUniform(GLuint location, float x, float y, float z, float w) = 0;
virtual void SendUniform(GLuint location, int x) = 0;
virtual void SendUniform(GLuint location, int x, int y) = 0;
virtual void SendUniform(GLuint location, int x, int y, int z) = 0;
virtual void SendUniform(GLuint location, int x, int y, int z, int w) = 0;
virtual void SendUniform(GLuint location, float *m, bool transp = false, int size = 4) = 0;
////////////////////////////////////////////////////////
/// 设置给定索引的顶点属性参数
////////////////////////////////////////////////////////
virtual void SendVertexAttrib(GLuint index, int x) = 0;
virtual void SendVertexAttrib(GLuint index, int x, int y) = 0;
virtual void SendVertexAttrib(GLuint index, int x, int y, int z) = 0;
virtual void SendVertexAttrib(GLuint index, int x, int y, int z, int w) = 0;
virtual void SendVertexAttrib(GLuint index, float x) = 0;
virtual void SendVertexAttrib(GLuint index, float x, float y) = 0;
virtual void SendVertexAttrib(GLuint index, float x, float y, float z) = 0;
virtual void SendVertexAttrib(GLuint index, float x, float y, float z, float w) = 0;
////////////////////////////////////////////////////////
/// 获取指定参数的位置
////////////////////////////////////////////////////////
virtual GLuint GetUniformLocation(const engine_string &name) const = 0;
virtual void SetAttributeLocation(const engine_string &name, GLuint location) = 0;
virtual GLuint GetAttributeLocation(const engine_string &name) const = 0;
////////////////////////////////////////////////////////
/// 获取程序日志
////////////////////////////////////////////////////////
virtual void GetProgramLog(engine_string &log) const = 0;
////////////////////////////////////////////////////////
/// 获取着色程序句柄
////////////////////////////////////////////////////////
virtual GLuint GetHandle() const = 0;
////////////////////////////////////////////////////////
/// 获取着色器参数
////////////////////////////////////////////////////////
virtual void GetParameter(GLenum param, GLint *data) const = 0;
////////////////////////////////////////////////////////
/// 着色器合法性检查
////////////////////////////////////////////////////////
virtual bool IsValid() const = 0;
virtual bool IsValidProgram() const = 0;
virtual void GetAttributeInfo(GLuint location, engine_string &name, GLenum &type, GLint &size) const = 0;
virtual void GetUniformInfo(GLuint location, engine_string &name, GLenum &datatype, GLint &size) const = 0;
virtual void GetAttachedShaders(std::vector<GLuint> &shaderhandles) = 0;
virtual void GetAttachedShaders(std::vector<GLSLShader> &shaders) = 0;
private:
DECLARE_OBJECT(GLSLProgram)
};




 |
|