当前位置: 首页 > news >正文

公司网站设计费计入什么科目网页设计与制作课件清华大学

公司网站设计费计入什么科目,网页设计与制作课件清华大学,做外贸 是否需要做中文网站,湖南网站建设大全一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式#xff0c;主要步骤是先创建一个纹理的对象#xff0c;和创建顶点VAO类似#xff0c;然后就开始绑定这个纹理#xff0c;最后在循环中使用#xff0c;有时候可能还要用到激活纹理单元的函数。然而#xff…一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式主要步骤是先创建一个纹理的对象和创建顶点VAO类似然后就开始绑定这个纹理最后在循环中使用有时候可能还要用到激活纹理单元的函数。然而对于何时应该激活如何和shader里的纹理编号进行绑定没有详细的说明导致在使用的时候产生了不少困惑。比如何时应该绑定绑定后的索引如何匹配。 在这一章的第一个效果案例显示一个带贴图纹理的箱子时只用到了绑定而没有用到激活部分主要代码如下即使这样在shader中也能让贴图获取到这里写进去的数据。 while (!glfwWindowShouldClose(window)){-----glBindVertexArray(VAO);-----}其shader的片段着色器代码如下这个片段的“texture1”数据在上述循环中并未明确指定传过来的 // texture sampler uniform sampler2D texture1;void main() {FragColor texture(texture1, TexCoord); } 这是我第一个猜想如果C代码中只创建了一个纹理数据不用激活和指定传输到片段着色器中使用“ glBindTexture(GL_TEXTURE_2D, texture);”函数可以默认将片段着色器中的贴图都填充同样的数据。带着这个猜想我开始验证我的想法。 二、实现 2.1、如果只有一个贴图数据默认传输到片段着色器的每一个“uniform sampler2D” 其他都不变我只修改片段着色器代码首先我创建了两个uniform sampler2D变量分别为texture1和texture2然后稍微修改其片段着色器代码如下如果这两个片段都获取到同样的数据则显示两倍的贴图效果如果不相等则屏幕显示一个绿色的片。 // texture sampler uniform sampler2D texture1; uniform sampler2D texture2; void main() {vec4 tempColor1texture(texture1, TexCoord);vec4 tempColor2texture(texture2,TexCoord);if(tempColor1tempColor2){FragColor tempColor1tempColor2;}elseFragColorvec4(0,1,0,1); } 试验的结果得到如下明显比之前要亮一点很显然两个贴图都获取到循环里传输过来的贴图数据而且是一样的。 图2.1.1 2.2、如果C代码只有一个贴图但我就想传给片段着色器中指定的纹理 1只激活第一个并不管用这个时候我尝试使用激活我只激活第一个试试结果和图2.1.1是一样的两个纹理还是被传输一样的纹理数据。 glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, texture); 2两个都激活但只赋值给第二个贴图结果两个都没有得到数据再尝试不同的激活方式保持只传输一个纹理数据的逻辑将第一个激活然后不赋值激活第二个并且赋值贴图纹理理论上这样应该是可以的啊结果变成了黑的如图2.2.1所示 glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, 0);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, texture); 图2.2.1 是不是两个贴图都没有获取到数据呢我还不确定再修改片段着色器判断一下如果确实没有获取到数据则让屏幕显示“黄色”的箱子结果如图2.2.2所示确实显示了黄色的箱子这说明我们 uniform sampler2D texture1; uniform sampler2D texture2; void main() {vec4 tempColor1texture(texture1, TexCoord);vec4 tempColor2texture(texture2,TexCoord);if(tempColor1tempColor2){if(tempColor1vec4(0,0,0,1)){FragColorvec4(1,1,0,1);}elseFragColor tempColor1tempColor2;}elseFragColorvec4(0,1,0,1); } 图2.2.2 贴图数据始终还是以默认的方式进行传输第二个激活并传输并没有奏效始终还是第一个激活才奏效。 3再增加一个贴图的索引结果可以精准的将数据传输到第二个贴图代码如下在激活之前给 ourShader.setInt(texture2, 1);// bind TextureglActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, 0);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, texture); 当前的shader指定一个索引1并且这个索引数值“1”一定要和后续绑定的“GL_TEXTURE1”对应最后得到的结果是绿色的一个箱子说明在片段着色器中贴图的数据不一样了。 三、总结 3.1、如果只有一个贴图数据在C中只用默认的绑定操作默认传输到片段着色器的每一个“uniform sampler2D”变量中。 3.2、如果要指定传输给片段着色器中一定要使用激活贴图 glActiveTexture(GL_TEXTURE1);和        设置索引号ourShader.setInt(texture2, 1);同时使用并且激活的序列号和设置索引值要相等只使用索引也不行。 3.3、激活和设置索引以及绑定都要在循环里每帧都使用尝试将索引设置不放在循环里也不行。 3.4、激活和绑定都是默认的情况下设置索引没有任何作用可以不用。比如在文章后续做一个2D游戏中的一篇文章里渲染精灵 其最后的游戏类代码中初始化时设置了纹理image的数据索引为0但是其着色器代码中并没有”image“这个变量而且此处 void Game::Init() {......ResourceManager::GetShader(sprite).Use().SetInteger(image, 0);....... } 无论你修改”image为任何变量比如“imageeeeeeeeeeeeeeee它依然能显示正确的结果因为这一篇文章中就是一个默认的贴图而且激活和绑定都是执行默认的0这里的索引就不会发生任何作用。
http://www.dnsts.com.cn/news/130824.html

相关文章:

  • 做网站需要企业站酷的网址
  • 网站制作和维护费用如何攻克房地产网站
  • 个个大公司网站万站网
  • wordpress 站点语言昆明网站制作专业
  • html5手机网站模板天津手机版建站系统价格
  • 高端网站有哪些优势注册公司需要啥资料
  • 网站地图对seo的影响cms 网站模板
  • wordpress类似网站国内永久crm不需要下载app
  • 网站经营内容界面设计是什么专业
  • 大连建网站网站开发中都引用什么文献
  • 怎样做国际网站平台网站开发工作分解结构
  • 网站管理规划方案凡科网登录下载
  • 怎么写代码做网站php wordpress 备份数据库
  • 免费行业网站源码苏宁网站建设和推广策略
  • excel做网站构建网站需要会什么
  • 网站编辑内容wordpress标签图片
  • 网站如何做子域名百度博客网站模板
  • 免费域名网站黄的免费宝安做网站的公司
  • 慈溪企业网站百度网盘pc网页版入口
  • 泰州网站设计培训电子商务公司网站模版
  • 网建设门户网站湘阴网页定制
  • 怎么用polylang做网站网站开发公司流程
  • 做3d人物模型素材下载网站wordpress返回顶部
  • 网站建设怎么做?门窗网站源码
  • 网站建设评审标准网站开发公司怎么查询
  • 网站页面设计最宽可做多宽WordPress表白墙主题
  • 做app网站的公司名称深圳网站建设服务哪些便宜
  • 义乌购物网站建设多少钱织梦网站根目录标签
  • 金融投资网站源码宜章网站建设
  • 网站的建设及推广跨境电商平台开发