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

无锡门户网站制作服务vs做网站不显示图片

无锡门户网站制作服务,vs做网站不显示图片,智慧团建注册登录入口下载,wordpress小程序投稿WebGL 顶点缓冲区 (Vertex Buffer) 顶点缓冲区(Vertex Buffer)是WebGL中存储顶点数据的主要机制,它允许您高效地将大量顶点数据发送到GPU。 基本概念 顶点缓冲区用于存储: 顶点位置坐标顶点颜色纹理坐标法线向量其他顶点属性数据 创建和使用顶点缓冲…

WebGL 顶点缓冲区 (Vertex Buffer)

顶点缓冲区(Vertex Buffer)是WebGL中存储顶点数据的主要机制,它允许您高效地将大量顶点数据发送到GPU。

基本概念

顶点缓冲区用于存储:

  • 顶点位置坐标
  • 顶点颜色
  • 纹理坐标
  • 法线向量
  • 其他顶点属性数据

创建和使用顶点缓冲区

1. 创建顶点数据

// 示例:三角形的三个顶点,每个顶点包含位置和颜色
const vertices = [// 位置(x,y)    颜色(r,g,b)0.0,  0.5,    1.0, 0.0, 0.0,  // 顶点1 (红色)-0.5, -0.5,    0.0, 1.0, 0.0,  // 顶点2 (绿色)0.5, -0.5,    0.0, 0.0, 1.0   // 顶点3 (蓝色)
];

2. 创建并绑定顶点缓冲区

// 创建缓冲区对象
const vertexBuffer = gl.createBuffer();// 绑定缓冲区为当前使用的ARRAY_BUFFER
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);// 将数据传入缓冲区
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);

3. 设置顶点属性指针

// 获取着色器中属性位置
const positionAttributeLocation = gl.getAttribLocation(program, "a_position");
const colorAttributeLocation = gl.getAttribLocation(program, "a_color");// 启用属性
gl.enableVertexAttribArray(positionAttributeLocation);
gl.enableVertexAttribArray(colorAttributeLocation);// 告诉WebGL如何从缓冲区读取数据
const stride = 5 * Float32Array.BYTES_PER_ELEMENT; // 每个顶点5个浮点数(x,y,r,g,b)// 位置属性
gl.vertexAttribPointer(positionAttributeLocation, // 属性位置2,                        // 每个顶点的大小(2个分量x,y)gl.FLOAT,                 // 数据类型false,                    // 是否归一化stride,                   // 步长(到下一个顶点的字节数)0                         // 偏移量
);// 颜色属性
gl.vertexAttribPointer(colorAttributeLocation,    // 属性位置3,                        // 每个顶点的大小(3个分量r,g,b)gl.FLOAT,                 // 数据类型false,                    // 是否归一化stride,                   // 步长2 * Float32Array.BYTES_PER_ELEMENT // 偏移量(跳过前2个浮点数x,y)
);

4. 绘制图形

// 绘制三角形
gl.drawArrays(gl.TRIANGLES, 0, 3);

顶点缓冲区的类型

WebGL中有两种主要缓冲区类型:

  1. ARRAY_BUFFER - 用于顶点数据
  2. ELEMENT_ARRAY_BUFFER - 用于索引数据(与索引缓冲区配合使用)

使用多个顶点缓冲区

您可以使用多个顶点缓冲区来存储不同类型的顶点属性:

// 位置数据
const positions = [0.0,  0.5,-0.5, -0.5,0.5, -0.5
];// 颜色数据
const colors = [1.0, 0.0, 0.0,0.0, 1.0, 0.0,0.0, 0.0, 1.0
];// 创建位置缓冲区
const positionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);// 创建颜色缓冲区
const colorBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, colorBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW);

性能考虑

  1. 静态数据:使用gl.STATIC_DRAW表示数据不会或很少改变
  2. 动态数据:使用gl.DYNAMIC_DRAW表示数据会频繁改变
  3. 流数据:使用gl.STREAM_DRAW表示数据每帧都会改变

顶点数组对象(VAO)

在更复杂的应用中,可以使用顶点数组对象来封装顶点属性状态:

const vao = gl.createVertexArray();
gl.bindVertexArray(vao);// 设置所有顶点属性...
// (位置、颜色、纹理坐标等)// 绘制时只需绑定VAO
gl.bindVertexArray(vao);
gl.drawArrays(gl.TRIANGLES, 0, 3);

顶点缓冲区是WebGL渲染的基础,合理使用可以显著提高渲染性能,特别是在处理复杂3D模型时。


文章转载自:

http://pORsez7b.ycnqk.cn
http://203YI3Jq.ycnqk.cn
http://vI23xr1A.ycnqk.cn
http://2yrbwmNv.ycnqk.cn
http://vaGV5z1K.ycnqk.cn
http://CrTqNjZJ.ycnqk.cn
http://yR2ry2NC.ycnqk.cn
http://CFLQbPlM.ycnqk.cn
http://zrign1CK.ycnqk.cn
http://JPKqcwCj.ycnqk.cn
http://HGEuRb5K.ycnqk.cn
http://PWovds3C.ycnqk.cn
http://Obi9a6xs.ycnqk.cn
http://kIlEuQyY.ycnqk.cn
http://Rq5EWGGS.ycnqk.cn
http://5EWDjoU8.ycnqk.cn
http://AvJU69Ze.ycnqk.cn
http://9SVgl5Rm.ycnqk.cn
http://xGdTTr06.ycnqk.cn
http://0CZiKluF.ycnqk.cn
http://1bAs19aS.ycnqk.cn
http://wJWQS33M.ycnqk.cn
http://rqYsfba0.ycnqk.cn
http://EINZ14B8.ycnqk.cn
http://BZBOmuUU.ycnqk.cn
http://NWsln8kw.ycnqk.cn
http://igtUA50T.ycnqk.cn
http://WDPx576C.ycnqk.cn
http://ypnQYGSR.ycnqk.cn
http://OtUBs2Dk.ycnqk.cn
http://www.dtcms.com/wzjs/755320.html

相关文章:

  • 优惠券怎么做自己的网站做301到别人网站
  • 做的网站需要什么技术支持百度怎么优化排名
  • 河源市企业网站seo价格站点提交
  • 如何在百度搜索dw做的网站wordpress新闻动态插件
  • 网站开发要求企业网站设计原则
  • 大型门户网站建设工作总结怎么制作游戏app
  • 免费海外网站cdn加速免费收录网提交
  • 如何制作网站教程查排名网站
  • 东莞长安网站推广公司华为官方网站手机商城
  • 北京app网站开发电商网站 支付宝接口
  • dede网站模板 音响有了php源码怎么做网站
  • 静态网站开发课程模板苏州信网网站建设技术有限公司
  • 网站建设加网络营销西安做网站微信公司哪家好
  • 外贸在哪些网站开发客户seo网站建站
  • 网站监控系统苏州知名网站建设设计公司排名
  • 公司的网站建设费用属于什么费群晖外网wordpress
  • 盐城seo网站优化软件十大广告设计公司简介
  • 宿迁网站优化响应式网站布局
  • 免域名x网站网易云网站开发
  • 怎么样自己建设网站太原网站建设vhuashi
  • 如何做一个导航网站查询网站服务器
  • 青岛高端网站设计哪家网站自己可以做么
  • 哪个网站专门做母婴自建站英文
  • 建设 政务数据共享网站h5页面制作平台有哪些
  • 天津网站开发招聘asp.net 建立网站
  • 做配色的网站wordpress网易邮箱
  • 做船公司网站wordpress安装权限
  • 蓝色网站电商型网站开发多少钱
  • 中国工程建设工程造价管理协会网站oracle数据库网站开发
  • 网站设计及开发华强北做电子网站