查看: 1097|回复: 3

osg实现opengl代码

[复制链接]

该用户从未签到

发表于 2013-11-15 23:37:00 | 显示全部楼层 |阅读模式
看了一个opengl写的教程,里面有如下代码:

  1. for (int order = 2; order <= 4; ++order)
  2.                         {
  3.                                 // computes deltaJ (line 7 in algorithm 4.1)
  4.                                 glFramebufferTextureEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, deltaJTexture, 0);
  5.                                 glViewport(0, 0, DataDef::RES_MU_S_32 * DataDef::RES_NU_8, DataDef::RES_MU_128);
  6.                                 glUseProgram(jProg);
  7.                                 glUniform1f(glGetUniformLocation(jProg, "first"), order == 2 ? 1.0 : 0.0);
  8.                                 glUniform1i(glGetUniformLocation(jProg, "transmittanceSampler"), DataDef::transmittanceUnit_1);
  9.                                 glUniform1i(glGetUniformLocation(jProg, "deltaESampler"), DataDef::deltaEUnit_4);
  10.                                 glUniform1i(glGetUniformLocation(jProg, "deltaSRSampler"), DataDef::deltaSRUnit_5);
  11.                                 glUniform1i(glGetUniformLocation(jProg, "deltaSMSampler"), DataDef::deltaSMUnit_6);
  12.                                 for (int layer = 0; layer < DataDef::RES_R_32; ++layer)
  13.                                 {
  14.                                         DataDef::setLayer(jProg, layer);
  15.                                         drawQuad();
  16.                                 }
  17.                         }
复制代码

这个教程内容我想用osg实现,setLayer函数里面是对shader传递参数的过程,这段难道我要写order = {2,3,4} 的三个视口相同attach到一个纹理的相机吗?  

该用户从未签到

发表于 2013-11-18 11:39:26 | 显示全部楼层
可以用3个相机来完成这一工作,osg是lazy rendering的机制,因此移植ogl代码的时候要注意这个特点

该用户从未签到

 楼主| 发表于 2013-11-19 22:38:16 | 显示全部楼层
那我这三个相机可以attach到一个纹理吗?还是三张纹理? 原opengl代码是出一张图啊,怎么做呢?

该用户从未签到

发表于 2013-12-2 09:43:59 | 显示全部楼层
不能到一个纹理上,attach到三张纹理或者Texture2DArray的三个depth上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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