一个完整的glslC++类

一个完整的glslC++类

现在做计算机图形 引擎不考虑GPU是不行的,但 opengl的glsl各个函数都是分离的,使用起来很不方便,无形中也增加了初学者的学习难度,这里做了个C++类,将opengl的各个shader(包括Gshader)设置封装起来,使用就方便多了。 ok,看附件
下面再举个简单的example *.h ...... Glshader m_MyShader; ...... *.cpp ....... m_Myshader.Create("myVSFileName","myGSFileName","myFSFileName"); m_Myshader.link(); m_Myshader.TurnOn(); m_Myshader.SetTexSample("DataTex", 0); m_Myshader.SetTexSample("ColorTex", 1); ......//shader 中使用多少 纹理加多少 m_Myshader.SetFloat("shaderPram",m_Pos.x); m_Myshader.SetFloat2("shaderPram2",m_Pos.x,m_Pos.y); m_Myshader.SetFloat3("shaderPram3",m_Pos.x,m_Pos.y,m_Pos.z); ......//shader 中使用多少uniform加多少 m_Myshader.TurnOff(); ....... void render() {     m_Myshader.TurnOn();     //零号纹理     glActiveTexture(GL_TEXTURE0);     glEnable(GL_TEXTURE_3D);     glBindTexture(GL_TEXTURE_3D,m_VolTexID);     //一号纹理     glActiveTexture(GL_TEXTURE1);     glEnable(GL_TEXTURE_1D);     glBindTexture(GL_TEXTURE_1D,m_Color1DTexID);     ....//依次加纹理      m_Myshader.SetFloat("shaderPram",m_EyePos.x);     m_Myshader.SetFloat2("shaderPram2",m_EyePos.x,m_EyePos.y);     m_Myshader.SetFloat3("shaderPram3",m_EyePos.x,m_EyePos.y,m_EyePos.z);     //动态uniform     drawploy()//绘制多边形     //零号纹理     glActiveTexture(GL_TEXTURE0);     glDisable(GL_TEXTURE_3D);    //一号纹理     glActiveTexture(GL_TEXTURE1);     glDisable(GL_TEXTURE_1D);       ....//依次关纹理      m_Myshader.TurnOFF(); } ok!如果使用有问题可以联系我 baobaoyang2008@126.com
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值