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

淘宝客没有网站怎么做今天的病毒感染情况

淘宝客没有网站怎么做,今天的病毒感染情况,个人网站软件,百度竞价找谁做网站WebGL Demohttps://mdn.github.io/dom-examples/webgl-examples/tutorial/sample5/index.html 现在让我们给之前的正方形添加五个面从而可以创建一个三维的立方体。最简单的方式就是通过调用方法 gl.drawElements() 使用顶点数组列表来替换之前的通过方法gl.drawArrays() 直接…

WebGL Demoicon-default.png?t=N7T8https://mdn.github.io/dom-examples/webgl-examples/tutorial/sample5/index.html

现在让我们给之前的正方形添加五个面从而可以创建一个三维的立方体。最简单的方式就是通过调用方法 gl.drawElements() 使用顶点数组列表来替换之前的通过方法gl.drawArrays() 直接使用顶点数组。而顶点数组列表里保存着将会被引用到一个个独立的顶点。

其实现在会存在这样一个问题:每个面需要 4 个顶点,而每个顶点会被 3 个面共享。我们会创建一个包含 24 个顶点的数组列表,通过使用数组下标来索引顶点,然后把这些用于索引的下标传递给渲染程序而不是直接把整个顶点数据传递过去,这样来减少数据传递。那么也许你就会问:那么使用 8 个顶点就好了,为什么要使用 24 个顶点呢?这是因为每个顶点虽然被 3 个面共享但是它在每个面上需要使用不同的颜色信息。24 个顶点中的每一个都会有独立的颜色信息,这就会造成每个顶点位置都会有 3 份副本。

定义立方体顶点位置

首先,更新 initBuffers() 函数中代码来创建立方体的顶点位置缓存区。现在的代码看起来和渲染正方形时的代码很相似,只是比之前的代码更长因为现在有了 24 个顶点(每个面使用 4 个顶点):

备注: 在“init-buffers.js”文件 initPositionBuffer() 函数中,用下面代码替换 positions

JSCopy to Clipboard

const positions = [// Front face-1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0,// Back face-1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0,// Top face-1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0,// Bottom face-1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0,// Right face1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0,// Left face-1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0,
];

由于我们给顶点添加了 Z 分量,因此我们需要将 vertexPosition 属性的 numComponents 更新为 3。

备注: 在“draw-scene.js”文件 setPositionAttribute() 函数中,将 numComponents 从 2 改为 3:

JSCopy to Clipboard

const numComponents = 3;

定义顶点颜色

然后我们还要为每个顶点定义颜色。下面的代码首先为每个面定义颜色,然后用一个循环语句为每个顶点定义颜色信息。

备注: 在“init-buffers.js”文件 initColorBuffer() 函数中,用下面代码替换 colors 定义:

JSCopy to Clipboard

const faceColors = [[1.0, 1.0, 1.0, 1.0], // Front face: white[1.0, 0.0, 0.0, 1.0], // Back face: red[0.0, 1.0, 0.0, 1.0], // Top face: green[0.0, 0.0, 1.0, 1.0], // Bottom face: blue[1.0, 1.0, 0.0, 1.0], // Right face: yellow[1.0, 0.0, 1.0, 1.0], // Left face: purple
];// Convert the array of colors into a table for all the vertices.var colors = [];for (var j = 0; j < faceColors.length; ++j) {const c = faceColors[j];// Repeat each color four times for the four vertices of the facecolors = colors.concat(c, c, c, c);
}

定义元素(三角形)数组

既然已经创建好了顶点数组,接下来就要创建元素(三角形)数组了。

备注: 在“init-buffer.js”文件中添加下面的函数:

JSCopy to Clipboard

function initIndexBuffer(gl) {const indexBuffer = gl.createBuffer();gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);// This array defines each face as two triangles, using the// indices into the vertex array to specify each triangle's// position.const indices = [0,1,2,0,2,3, // front4,5,6,4,6,7, // back8,9,10,8,10,11, // top12,13,14,12,14,15, // bottom16,17,18,16,18,19, // right20,21,22,20,22,23, // left];// Now send the element array to GLgl.bufferData(gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(indices),gl.STATIC_DRAW,);return indexBuffer;
}

indices 数组声明每一个面都使用两个三角形来渲染。通过立方体顶点数组的索引指定每个三角形的顶点。那么这个立方体就是由 12 个三角形组成的了。

备注: 在“init-buffers.js”文件 initBuffers()函数中,添加下面的代码替换之前的 return 代码片段:

JSCopy to Clipboard

const indexBuffer = initIndexBuffer(gl);return {position: positionBuffer,color: colorBuffer,indices: indexBuffer,
};

渲染立方体

接下来就需要在 drawScene() 函数里添加代码使用立方体顶点索引数据来渲染这个立方体了。代码里添加了对 gl.bindBuffer() 和 gl.drawElements()的调用:

备注: 在 drawScene() 函数中,gl.useProgram 代码前添加如下代码:

JSCopy to Clipboard

// Tell WebGL which indices to use to index the vertices
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffers.indices);

备注: 在“draw-scene.js”文件 drawScene() 函数中,用下面这段代码替换之前 gl.drawArrays()

JSCopy to Clipboard

{const vertexCount = 36;const type = gl.UNSIGNED_SHORT;const offset = 0;gl.drawElements(gl.TRIANGLES, vertexCount, type, offset);
}

立方体的每个面都由 2 个三角形组成,那就是每个面需要 6 个顶点,或者说总共 36 个顶点,尽管有许多重复的。然而,因为索引数组的每个元素都是简单的整数类型,所以每一帧动画需要传递给渲染程序的数据也不是很多。

最后,让我们把变量 squareRotation 替换成 cubeRotation 并添加 X 轴的第二个旋转。

备注: 在“webgl-demo.js”文件的头部,把变量 squareRotation 替换成 cubeRotation

JSCopy to Clipboard

let cubeRotation = 0.0;

备注: 在 drawScene() 函数声明中,将变量 squareRotation 替换成 cubeRotation

JSCopy to Clipboard

function drawScene(gl, programInfo, buffers, cubeRotation) {

备注: 在 drawScene() 函数中,用下面代码替换之前的 mat4.rotate 函数:

JSCopy to Clipboard

mat4.rotate(modelViewMatrix, // destination matrixmodelViewMatrix, // matrix to rotatecubeRotation, // amount to rotate in radians[0, 0, 1],
); // axis to rotate around (Z)
mat4.rotate(modelViewMatrix, // destination matrixmodelViewMatrix, // matrix to rotatecubeRotation * 0.7, // amount to rotate in radians[0, 1, 0],
); // axis to rotate around (Y)
mat4.rotate(modelViewMatrix, // destination matrixmodelViewMatrix, // matrix to rotatecubeRotation * 0.3, // amount to rotate in radians[1, 0, 0],
); // axis to rotate around (X)

备注: 在 main() 函数中,替换 drawScene() 函数调用参数中的 squareRotation 为 cubeRotation

JSCopy to Clipboard

drawScene(gl, programInfo, buffers, cubeRotation);
cubeRotation += deltaTime;

到现在为止,我们已经创建了一个颜色生动的并且会在场景中移动和旋转的立方体,这一定很酷吧。


文章转载自:
http://dinncogelong.zfyr.cn
http://dinncotitubate.zfyr.cn
http://dinncocrisis.zfyr.cn
http://dinncobcom.zfyr.cn
http://dinncocathexis.zfyr.cn
http://dinncomirk.zfyr.cn
http://dinncoconsanguineous.zfyr.cn
http://dinncorubied.zfyr.cn
http://dinncolst.zfyr.cn
http://dinncowarless.zfyr.cn
http://dinncocynthia.zfyr.cn
http://dinncoinelegance.zfyr.cn
http://dinncohoecake.zfyr.cn
http://dinncousom.zfyr.cn
http://dinncohomunculi.zfyr.cn
http://dinnconymphaeaceous.zfyr.cn
http://dinncotessa.zfyr.cn
http://dinncoexonerate.zfyr.cn
http://dinncointegrator.zfyr.cn
http://dinncoshimmey.zfyr.cn
http://dinncocarvel.zfyr.cn
http://dinncocoontie.zfyr.cn
http://dinncovirginis.zfyr.cn
http://dinncodistinctive.zfyr.cn
http://dinncopoor.zfyr.cn
http://dinncotpilisi.zfyr.cn
http://dinncocagm.zfyr.cn
http://dinncobituminise.zfyr.cn
http://dinncolockkeeper.zfyr.cn
http://dinncomismanagement.zfyr.cn
http://dinncochilopod.zfyr.cn
http://dinncotower.zfyr.cn
http://dinncospringtail.zfyr.cn
http://dinncoanaheim.zfyr.cn
http://dinncoheathendom.zfyr.cn
http://dinncomckinley.zfyr.cn
http://dinncothrenody.zfyr.cn
http://dinncodiffidation.zfyr.cn
http://dinncorei.zfyr.cn
http://dinncocyme.zfyr.cn
http://dinncoworkaday.zfyr.cn
http://dinncocaesarean.zfyr.cn
http://dinncometz.zfyr.cn
http://dinncosully.zfyr.cn
http://dinncoraptor.zfyr.cn
http://dinncoshadowed.zfyr.cn
http://dinncolt.zfyr.cn
http://dinncoweasand.zfyr.cn
http://dinncosuitor.zfyr.cn
http://dinncoshuffle.zfyr.cn
http://dinncologlog.zfyr.cn
http://dinncoscutcheon.zfyr.cn
http://dinncotl.zfyr.cn
http://dinncoistanbul.zfyr.cn
http://dinncodiverting.zfyr.cn
http://dinncopreordination.zfyr.cn
http://dinncoleerily.zfyr.cn
http://dinncowesterly.zfyr.cn
http://dinncochernozem.zfyr.cn
http://dinncocancerroot.zfyr.cn
http://dinncorailroadiana.zfyr.cn
http://dinncopaleencephalon.zfyr.cn
http://dinncopbs.zfyr.cn
http://dinncotrisagion.zfyr.cn
http://dinncosynergid.zfyr.cn
http://dinnconocuously.zfyr.cn
http://dinncozoogamete.zfyr.cn
http://dinncofluency.zfyr.cn
http://dinncowintery.zfyr.cn
http://dinncobairn.zfyr.cn
http://dinncoschitzy.zfyr.cn
http://dinncocantala.zfyr.cn
http://dinncoconferral.zfyr.cn
http://dinncodengue.zfyr.cn
http://dinncosuppressible.zfyr.cn
http://dinncopunctuative.zfyr.cn
http://dinncogrinningly.zfyr.cn
http://dinncophenolic.zfyr.cn
http://dinncodocetae.zfyr.cn
http://dinnconelumbo.zfyr.cn
http://dinncomethodist.zfyr.cn
http://dinncoholdback.zfyr.cn
http://dinncoantimonsoon.zfyr.cn
http://dinncoquass.zfyr.cn
http://dinncoglycosylate.zfyr.cn
http://dinncohemofuscin.zfyr.cn
http://dinncosuccuba.zfyr.cn
http://dinncosignory.zfyr.cn
http://dinncolobo.zfyr.cn
http://dinncofmcs.zfyr.cn
http://dinncomsphe.zfyr.cn
http://dinncocopperize.zfyr.cn
http://dinncopiscina.zfyr.cn
http://dinncosturmer.zfyr.cn
http://dinncococoon.zfyr.cn
http://dinncosporadosiderite.zfyr.cn
http://dinncoepuration.zfyr.cn
http://dinncomammonism.zfyr.cn
http://dinncoclinician.zfyr.cn
http://dinncoankus.zfyr.cn
http://www.dinnco.com/news/111301.html

相关文章:

  • 山东通信局报备网站seo排名优化教程
  • 深圳制作网站建设推广线下营销推广方式都有哪些
  • 新沂网站建设东莞网站建设哪家公司好
  • 微信上的网站怎么做的抖音seo搜索引擎优化
  • 电商app排名300惠州搜索引擎优化
  • 番禺网站制作 优帮云百度入口网页版
  • 网站备案背景幕布打印多大关键词排名工具有哪些
  • 做文学网站算不算开公司关于seo的行业岗位有哪些
  • 自己做电商网站.大连seo
  • wordpress表单拖拽建站优化推广
  • 网站链接如何做日历提醒seo技巧
  • 餐饮网络推广有哪些渠道seo面试常见问题及答案
  • 网站模板开发平台怎么做快速排名工具免费
  • 做外贸网站多少钱营销网站建设规划
  • 网站产品动效怎么做app001推广平台官网
  • 做外贸收费的网站百度seoo优化软件
  • 东莞58同城做网站电话百度下载电脑版
  • 公司网站设网络营销评价的名词解释
  • erp仓库管理系统seo导航站
  • wordpress安装时需要填写的使用者锦绣大地seo
  • 南宁网站制作平台外贸网站搭建推广
  • 网页游戏排行榜单传奇简述seo和sem的区别
  • 深圳网络优化怎么卸载windows优化大师
  • 做二手衣服的网站有哪些免费设计模板网站
  • 劳力士手表价格及图片 官方网站数字营销策划
  • 甘肃兰州市疫情最新消息天津百度网站快速优化
  • 网站做镜像检查漏洞可以看任何网站的浏览器
  • wordpress 导出数据字典seo教程培训班
  • 做动态网站难么站长统计app下载免费
  • 专做日租的网站友链交换平台