查看: 1497|回复: 6

通过纹理的方式往shader传递数据

[复制链接]

该用户从未签到

发表于 2013-8-11 18:47:59 | 显示全部楼层 |阅读模式
想实现往顶点着色器vertexShader里面传递数据,一开始想的是传递数组,但是数据量大了显卡内存就不支持了,后来想先把数据放到image里面,将image与texture绑定,通过uniform传递到shader,但是不知道在shader里怎么再把数据取出来,存储的数据与顶点一一对应,一个顶点对应一个数据,想在shader里取出每个顶点对应的数据来,请大家多帮忙啊,谢谢

该用户从未签到

发表于 2013-8-12 10:28:59 | 显示全部楼层
设置纹理的属性为NEAREST和CLAMP,然后就直接用texture2D()来取得纹理查找表中的数据就可以了

该用户从未签到

 楼主| 发表于 2013-8-12 10:50:32 | 显示全部楼层
本帖最后由 smengq 于 2013-8-12 16:03 编辑
array 发表于 2013-8-12 10:28
设置纹理的属性为NEAREST和CLAMP,然后就直接用texture2D()来取得纹理查找表中的数据就可以了


glsl顶点着色器取出纹理通过texture2D(gsampler2D  sampler,vec2  P)P是纹理坐标,通过gl_VertexID可以取出顶点的索引号,我想取出对应每个顶点保存在纹理中的数据,vce2 p该怎么操作?还有,在osg里面绘制的点point,加上shader之后为什么显示方形的?顶点着色器里面没做操作,只是在片元着色器里面赋值一个颜色,原来是圆形的,能不能osg里面的point使用shader之后也显示方形的?加着色器的时候是不是顶点、片元着色器一块用,只加顶点不加片元的话在应用程序里面对颜色的设置是不是也不管用了?谢谢

该用户从未签到

发表于 2013-8-12 18:07:02 | 显示全部楼层
如果你想针对每个顶点传递数据,建议使用顶点属性,比如法线。

该用户从未签到

发表于 2013-8-13 10:39:42 | 显示全部楼层
如果是逐顶点的数据为什么不用vertex attribute
只有片元着色器是可以的,只有顶点着色器不行

该用户从未签到

发表于 2013-11-3 11:27:31 | 显示全部楼层
array 发表于 2013-8-13 10:39
如果是逐顶点的数据为什么不用vertex attribute
只有片元着色器是可以的,只有顶点着色器不行

我想请问下,如何将纹理坐标Array通过vertex attribute传递给shader?

该用户从未签到

发表于 2013-11-18 10:47:07 | 显示全部楼层
Geometry的系列函数啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表