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

荷兰网站后缀南宁制作网站多少钱

荷兰网站后缀,南宁制作网站多少钱,网站开发项目简单描述,做杂志一般在哪个网站找感觉在 WebGL 中#xff0c;gl.texImage2D 是一个非常关键的函数#xff0c;用于将图像数据上传到 WebGL 上下文中并作为纹理对象的一部分。它允许你将图像、视频、画布等作为纹理源。理解如何使用 gl.texImage2D 是在 WebGL 中处理纹理的核心之一。 文章目录 gl.texImage2D 的基…在 WebGL 中gl.texImage2D 是一个非常关键的函数用于将图像数据上传到 WebGL 上下文中并作为纹理对象的一部分。它允许你将图像、视频、画布等作为纹理源。理解如何使用 gl.texImage2D 是在 WebGL 中处理纹理的核心之一。 文章目录 gl.texImage2D 的基本概念具体场景和代码示例示例使用 gl.texImage2D 加载和使用纹理1. HTML 文件2. JavaScript 部分加载纹理并应用 3. 代码解析4. 总结 gl.texImage2D 的基本概念 gl.texImage2D 函数的作用是将图像或像素数据上传到 WebGL 中作为纹理。纹理是 2D 图像通常用于给 3D 模型的表面贴图以实现更真实的渲染效果。 其语法如下 gl.texImage2D(target, level, internalFormat, format, type, image);target纹理目标通常使用 gl.TEXTURE_2D。level纹理的细节层级通常设置为 0基础纹理层大于0的值会使用到纹理的多级渐远纹理mipmap功能。internalFormat纹理的内部格式指定 WebGL 如何存储纹理数据常见的值有 gl.RGB、gl.RGBA、gl.LUMINANCE 等。format纹理数据的格式定义从图像源中提取的数据类型。通常使用 gl.RGB 或 gl.RGBA这与图像的颜色深度相关。type指定数据类型通常使用 gl.UNSIGNED_BYTE8 位无符号整数或其他格式如 gl.FLOAT。image图像数据源可以是一个 img 元素、canvas 元素、video 元素或者是一个 ImageData 对象。 具体场景和代码示例 示例使用 gl.texImage2D 加载和使用纹理 在这个例子中我们将一个图片加载为纹理并将其应用到一个立方体的表面上。这里会展示如何使用 gl.texImage2D 来将图片数据上传为纹理。 1. HTML 文件 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleWebGL - texImage2D 示例/title /head bodycanvas idwebgl-canvas width500 height500/canvasscript srcmain.js/script /body /html2. JavaScript 部分加载纹理并应用 // 获取 WebGL 上下文 const canvas document.getElementById(webgl-canvas); const gl canvas.getContext(webgl);// 立方体的顶点数据 const vertices new Float32Array([-0.5, -0.5, -0.5, // Front face0.5, -0.5, -0.5,0.5, 0.5, -0.5,-0.5, 0.5, -0.5,-0.5, -0.5, 0.5, // Back face0.5, -0.5, 0.5,0.5, 0.5, 0.5,-0.5, 0.5, 0.5, ]);// 立方体的纹理坐标数据 (u, v) const texCoords new Float32Array([0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, // Front face0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, // Back face0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, // Left face0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, // Right face0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, // Top face0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, // Bottom face ]);// 立方体的索引 const indices new Uint16Array([0, 1, 2, 0, 2, 3,4, 5, 6, 4, 6, 7,0, 1, 5, 0, 5, 4,1, 2, 6, 1, 6, 5,2, 3, 7, 2, 7, 6,3, 0, 4, 3, 4, 7 ]);// 创建缓冲区并绑定顶点数据 const vertexBuffer gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);// 创建纹理坐标缓冲区并绑定 const texCoordBuffer gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); gl.bufferData(gl.ARRAY_BUFFER, texCoords, gl.STATIC_DRAW);// 创建索引缓冲区并绑定 const indexBuffer gl.createBuffer(); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);// 编写着色器程序 const vertexShaderSource attribute vec4 a_position;attribute vec2 a_texCoord;varying vec2 v_texCoord;void main() {gl_Position a_position;v_texCoord a_texCoord;} ;const fragmentShaderSource precision mediump float;varying vec2 v_texCoord;uniform sampler2D u_texture;void main() {gl_FragColor texture2D(u_texture, v_texCoord);} ;// 编译着色器并链接程序 function compileShader(type, source) {const shader gl.createShader(type);gl.shaderSource(shader, source);gl.compileShader(shader);if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {console.error(Shader compilation failed, gl.getShaderInfoLog(shader));}return shader; }const vertexShader compileShader(gl.VERTEX_SHADER, vertexShaderSource); const fragmentShader compileShader(gl.FRAGMENT_SHADER, fragmentShaderSource);const shaderProgram gl.createProgram(); gl.attachShader(shaderProgram, vertexShader); gl.attachShader(shaderProgram, fragmentShader); gl.linkProgram(shaderProgram);if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {console.error(Program linking failed, gl.getProgramInfoLog(shaderProgram)); }gl.useProgram(shaderProgram);// 获取属性和统一变量的位置 const positionLocation gl.getAttribLocation(shaderProgram, a_position); const texCoordLocation gl.getAttribLocation(shaderProgram, a_texCoord); const textureLocation gl.getUniformLocation(shaderProgram, u_texture);// 绑定顶点数据 gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.vertexAttribPointer(positionLocation, 3, gl.FLOAT, false, 0, 0); gl.enableVertexAttribArray(positionLocation);// 绑定纹理坐标数据 gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); gl.enableVertexAttribArray(texCoordLocation);// 创建纹理对象并绑定 const texture gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture);// 使用 texImage2D 上传图片 const image new Image(); image.onload () {// 图片加载完成后将图像上传为纹理gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image);gl.generateMipmap(gl.TEXTURE_2D); // 生成mipmap纹理// 绘制gl.clearColor(0.0, 0.0, 0.0, 1.0);gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);gl.enable(gl.DEPTH_TEST);gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT, 0); }; image.src your-texture-image.jpg; // 这里替换为你的纹理图像路径3. 代码解析 gl.createTexture创建一个纹理对象。 gl.bindTexture(gl.TEXTURE_2D, texture)将创建的纹理对象绑定为当前活动的纹理。 gl.texImage2D将图片上传为纹理image.onload 确保在图片加载完成后才会上传到 WebGL 中。这里将图片的像素数据传给 WebGL。 第一个参数 gl.TEXTURE_2D指定纹理目标为 2D 纹理。第二个参数 0纹理的细节层级通常设置为 0 表示基础纹理。第三个参数 gl.RGB纹理的内部格式存储格式。第四个参数 gl.RGB纹理的像素格式图像格式。第五个参数 gl.UNSIGNED_BYTE指定数据类型这里是 8 位无符号整数。第六个参数 image图片元素作为纹理数据源。 gl.generateMipmap生成多级渐远纹理提升纹理渲染性能并防止远离摄像机时纹理过于模糊。 纹理渲染在片元着色器中texture2D 函数根据纹理坐标从上传的纹理中采样像素并进行渲染。 4. 总结 gl.texImage2D 是 WebGL 中上传纹理的核心方法它将图像数据或像素数据上传为纹理对象允许在渲染时将纹理映射到几何体表面。理解如何使用 gl.texImage2D 并正确处理纹理数据是开发 WebGL 应用的基础之一。
http://www.hkea.cn/news/14469684/

相关文章:

  • 免费做网站的页面上影响网站排名的因素
  • 南京网站制作公司南京微尚管理咨询公司一般是做什么的
  • 大众点评如何做团购网站协会网站建设哪里实惠
  • 广西网站设计欣赏工具类网站开发
  • 网站的空间与域名企业服务平台介绍
  • 晋江网站建设洛阳网站制作建网站网站建设
  • 哈尔滨网站开发工作室广东新闻联播直播回放
  • 哪个网站能在百度做推广建站优化一条龙
  • 域名交易网站和平苏州网站建设
  • 怎么自己做砍价网站wordpress语言系统
  • 专业网站托管购物网页设计图片
  • 用Html5做网站网站屏蔽省份
  • 上海企业建站公司哪家好wordpress paginate_comments_links
  • 网站开发著作权济宁住房和城乡建设厅网站
  • 网站建设基本流程是什么做自己的网站怎么赚钱
  • 网站开发方案目录微网站 php
  • 企业网站找谁做黑龙江 网站建设
  • 设计网站属于什么专业西安高校网站建设
  • 长沙建站标协助找有为太极品牌商标设计logo
  • 年前做招聘网站话术上海短视频推广公司
  • 深圳网站公司有哪些网站弹出式链接后台怎么做
  • 网站建设与维护课程外汇网站怎么做优外汇网站
  • 如何制作自己的网站链接视频南宁做网站找哪家好
  • 域名注册网站的域名哪里来的太原营销网站建设制作平台
  • 区块链技术和网站开发结合自己建网站的流程
  • 花店网站建设环境分析营销者主要通过制作
  • 西昌市做网站的公司点样用外网访问自己做的网站
  • 一个网站怎么做app购物商城app
  • 网站ui设计用什么软件做人才市场网站建设论文
  • 查网站域名备案价格17网站一起做网店普宁