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

网站开发项目详细计划书深圳网站设计哪家比较好

网站开发项目详细计划书,深圳网站设计哪家比较好,网站开发招标参数,网站建设需要这些工具和软件面剔除 尝试在脑子中想象一个3D立方体#xff0c;数数你从任意方向最多能同时看到几个面。如果你的想象力不是过于丰富了#xff0c;你应该能得出最大的面数是3。你可以从任意位置和任意方向看向这个球体#xff0c;但你永远不能看到3个以上的面。所以我们为什么要浪费时间…面剔除 尝试在脑子中想象一个3D立方体数数你从任意方向最多能同时看到几个面。如果你的想象力不是过于丰富了你应该能得出最大的面数是3。你可以从任意位置和任意方向看向这个球体但你永远不能看到3个以上的面。所以我们为什么要浪费时间绘制我们不能看见的那3个面呢如果我们能够以某种方式丢弃这几个看不见的面我们能省下超过50%的片段着色器执行数 我说的是超过50%而不是50%因为从特定角度来看的话只能看见2个甚至是1个面。在这种情况下我们就能省下超过50%了。 这是一个很好的主意但我们仍有一个问题需要解决我们如何知道一个物体的某一个面不能从观察者视角看到呢 如果我们想象任何一个闭合形状它的每一个面都有两侧每一侧要么面向用户要么背对用户。如果我们能够只绘制面向观察者的面呢 这正是面剔除(Face Culling)所做的。OpenGL能够检查所有面向(Front Facing)观察者的面并渲染它们而丢弃那些背向(Back Facing)的面节省我们很多的片段着色器调用它们的开销很大。但我们仍要告诉OpenGL哪些面是正向面(Front Face)哪些面是背向面(Back Face)。OpenGL使用了一个很聪明的技巧分析顶点数据的环绕顺序(Winding Order)。 环绕顺序 当我们定义一组三角形顶点时我们会以特定的环绕顺序来定义它们可能是顺时针(Clockwise)的也可能是逆时针(Counter-clockwise)的。每个三角形由3个顶点所组成我们会从三角形中间来看为这3个顶点设定一个环绕顺序。 可以看到我们首先定义了顶点1之后我们可以选择定义顶点2或者顶点3这个选择将定义了这个三角形的环绕顺序。下面的代码展示了这点 float vertices[] {// 顺时针vertices[0], // 顶点1vertices[1], // 顶点2vertices[2], // 顶点3// 逆时针vertices[0], // 顶点1vertices[2], // 顶点3vertices[1] // 顶点2 };每组组成三角形图元的三个顶点就包含了一个环绕顺序。OpenGL在渲染图元的时候将使用这个信息来决定一个三角形是一个正向三角形还是背向三角形。默认情况下逆时针顶点所定义的三角形将会被处理为正向三角形。 当你定义顶点顺序的时候你应该想象对应的三角形是面向你的所以你定义的三角形从正面看去应该是逆时针的。这样定义顶点很棒的一点是实际的环绕顺序是在光栅化阶段进行的也就是顶点着色器运行之后。这些顶点就是从观察者视角所见的了。 观察者所面向的所有三角形顶点就是我们所指定的正确环绕顺序了而立方体另一面的三角形顶点则是以相反的环绕顺序所渲染的。这样的结果就是我们所面向的三角形将会是正向三角形而背面的三角形则是背向三角形。下面这张图显示了这个效果 在顶点数据中我们将两个三角形都以逆时针顺序定义正面的三角形是1、2、3背面的三角形也是1、2、3如果我们从正面看这个三角形的话。然而如果从观察者当前视角使用1、2、3的顺序来绘制的话从观察者的方向来看背面的三角形将会是以顺时针顺序渲染的。虽然背面的三角形是以逆时针定义的它现在是以顺时针顺序渲染的了。这正是我们想要剔除Cull丢弃的不可见面了 在顶点数据中我们定义的是两个逆时针顺序的三角形。然而从观察者的方面看后面的三角形是顺时针的如果我们仍以1、2、3的顺序以观察者当面的视野看的话。即使我们以逆时针顺序定义后面的三角形它现在还是变为顺时针。它正是我们打算剔除丢弃的不可见的面 进行面剔除 在本节的开头我们就说过OpenGL能够丢弃那些渲染为背向三角形的三角形图元。既然已经知道如何设置顶点的环绕顺序了我们就可以使用OpenGL的面剔除选项了它默认是禁用状态的。 在之前教程中使用的立方体顶点数据并不是按照逆时针环绕顺序定义的所以我更新了顶点数据来反映逆时针的环绕顺序你可以从这里复制它们。尝试想象这些顶点确认在每个三角形中它们都是以逆时针定义的这是一个很好的习惯。 要想启用面剔除我们只需要启用OpenGL的GL_CULL_FACE选项 glEnable(GL_CULL_FACE);从这一句代码之后所有背向面都将被丢弃尝试飞进立方体内部看看所有的内面是不是都被丢弃了。目前我们在渲染片段的时候能够节省50%以上的性能但注意这只对像立方体这样的封闭形状有效。当我们想要绘制上一节中的草时我们必须要再次禁用面剔除因为它们的正向面和背向面都应该是可见的。 OpenGL允许我们改变需要剔除的面的类型。如果我们只想剔除正向面而不是背向面会怎么样我们可以调用glCullFace来定义这一行为 glCullFace(GL_FRONT);glCullFace函数有三个可用的选项 GL_BACK只剔除背向面。GL_FRONT只剔除正向面。GL_FRONT_AND_BACK剔除正向面和背向面。 glCullFace的初始值是GL_BACK。除了需要剔除的面之外我们也可以通过调用glFrontFace告诉OpenGL我们希望将顺时针的面而不是逆时针的面定义为正向面 glFrontFace(GL_CCW);默认值是GL_CCW它代表的是逆时针的环绕顺序另一个选项是GL_CW它显然代表的是顺时针顺序。 我们可以来做一个实验告诉OpenGL现在顺时针顺序代表的是正向面 glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glFrontFace(GL_CW);这样的结果是只有背向面被渲染了 注意你可以仍使用默认的逆时针环绕顺序但剔除正向面来达到相同的效果 glEnable(GL_CULL_FACE); glCullFace(GL_FRONT);可以看到面剔除是一个提高OpenGL程序性能的很棒的工具。但你需要记住哪些物体能够从面剔除中获益而哪些物体不应该被剔除。
http://www.hkea.cn/news/14309706/

相关文章:

  • 境外服务器代理平台崇州seo
  • 营销型网站制作公司有赞云 wordpress
  • 大力推广建设电子商务网站技术潍坊大型网站建设平台
  • 邯郸怎么做网站沧州机械类网站建设
  • 网站设置关键字医疗网站的建设设计要注意什么问题
  • 网站美化工具凡客v+
  • 自己做的网站链接阿里云备案网站建设方案书
  • 郑州微盟网站建设公司wordpress 说明文档下载
  • 重庆网站设计开发门户网站免费建站
  • 个人网站建设方案书用备案的运营一个app一年需要多少钱
  • 南通旅游网站建设江苏营销型网站公司
  • 工商局网站建设查不到重庆网站建设cqsday
  • 方案策划网站wordpress 购买按钮
  • 网站制作的重要性内页网站地图 权重
  • 南京建设工程招聘信息网站河北搜索引擎推广服务
  • 郑州网站开发汉狮保山网站开发服务
  • 建设网站培训如何自己做网站站长
  • es网站建设从网站栏目看网站功能
  • 云南网站建设快速优化开发app需要什么技术人才
  • 门户网站的设计网络营销渠道
  • 垂直行业门户网站建设方案wordpress get_template_part
  • 秦皇岛吧贴吧网站关键词优化代理
  • 哈尔滨网站建设设计公司怎么做网站内部链接的优化
  • 做的好点的外贸网站有哪些Ext做网站
  • 做网站国外网站淮安网站建设公司电话
  • 定制旅游网站建设方案万网域名管理控制台
  • 龙泉市旅游门户网站建设好用吗
  • 广州新业建设管理有限公司网站网站制作一键生成
  • 福建建设执业资格中心网站做自适应网站
  • 南山网站制作联系电话国内做的比较大的外贸电商网站