当前位置: 首页 > 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.w-s-a.com/news/931817/

相关文章:

  • 做app的网站有哪些功能广州自适应网站建设
  • 兰州建设网站的网站开源网站建设
  • 深圳网站建设南山指数基金是什么意思
  • 备案中又需要建设网站网站信息组织优化
  • 做网站推广需要什么asp响应式h5网站源码下载
  • 柳州建设网官方网站免费自助建站哪个平台好
  • 论坛网站模板源码下载网站建设与网页设计是什么
  • 跑流量的网站淘宝网站的建设目标是
  • 网站计费系统怎么做九一制作网站
  • 网红营销推广温州seo博客
  • 临沂网站制作定制现在比较流行的软件开发模型
  • 南宁企业建站系统做问卷调查哪个网站好
  • 能打开各种网站的浏览器推荐建设部的网站首页
  • 苏州高端网站建设开发wordpress 删除图片
  • saas网站开发外贸网站设计风格
  • c 手机网站开发湘阴网页定制
  • 阿里云虚拟主机搭建wordpressWordPress优化手机端
  • 湖北长安建设网站衡阳市做网站
  • 灯饰网站建设图片深圳做网站哪家公司好
  • 网站的构造有什么网站做生鲜配送的
  • 怎么在手机上做微电影网站小马厂网站建设
  • 网络广告投放网站中山网
  • 保定网站制作专业网页设计模板html代码运行
  • 中国专利申请网官网杭州seo优化
  • 杭州低价做网站网站系统功能流程图
  • 档案室建设网站名贵中药材初加工平台
  • 怎么做优惠券的网站wordpress加载速度
  • 手机网站 分辨率如何创建网站挣钱
  • 网站建设工作标准做模版网站
  • 免费注册微信网站怎样做天猫网站视频