`

webGL ——1

阅读更多
一回想,已经毕业两个月,来到中科软也快两个月了,业余时间学习webGL,个人感觉这个东西很有前途,分享给大家,也算是我的学习笔记吧!
下面把建立三角形和矩形的代码整理到这里:

/**
*初始化图形缓存区  缓冲区实际上是图形卡上的内存
*/
    function initBuffers() {
        triangleVertexPositionBuffer = gl.createBuffer();//创建三角形顶点数组
        gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);//绑定数值
        var vertices = [
             0.0,  1.0,  0.0,
            -1.0, -1.0,  0.0,
             1.0, -1.0,  0.0
        ];//定义三角形
        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);//vertices填充缓存区
        triangleVertexPositionBuffer.itemSize = 3;//缓存区的列
        triangleVertexPositionBuffer.numItems = 3;//缓存区的行  三个独立的顶点位置(numItems),其中每一个由三个数(itemSize)组成

        squareVertexPositionBuffer = gl.createBuffer();//正方形
        gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
        vertices = [
             1.0,  1.0,  0.0,
            -1.0,  1.0,  0.0,
             1.0, -1.0,  0.0,
            -1.0, -1.0,  0.0
        ];
        gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
        squareVertexPositionBuffer.itemSize = 3;
        squareVertexPositionBuffer.numItems = 4;
    }

//将两个对象的顶点位置放置到图形卡上————————绘制图形
    function drawScene() {
        gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);//告诉 WebGL画布的大小
        gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);//清除画布

//mat4.perspective=function(a,b,c,d,e){a=c*Math.tan(a*Math.PI/360);b=a*b;return mat4.frustum(-b,b,-a,a,c,d,e)};
        mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0, pMatrix);//为场景设置透视参数

//mat3.identity=function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a};
        mat4.identity(mvMatrix);//

        mat4.translate(mvMatrix, [-1.5, 0.0, -7.0]);//变换
        gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
        gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, triangleVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
        setMatrixUniforms();//把矩阵参数传到图形卡
        gl.drawArrays(gl.TRIANGLES, 0, triangleVertexPositionBuffer.numItems);//从顶点数组的第0项开始一直到第numItems个元素,将顶点数组绘制成三角形
//alert("triangle Finish!");

        mat4.translate(mvMatrix, [3.0, 0.0, 0.0]);
        gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
        gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
        setMatrixUniforms();
        gl.drawArrays(gl.TRIANGLE_STRIP, 0, squareVertexPositionBuffer.numItems);
    }
请大家主意:所有操作矩阵的函数都定义在mat4对象中!各位大侠多多指教!下一课再见!
分享到:
评论

相关推荐

    webgl喷泉粒子发射动画特效

    【标题】"WebGL喷泉粒子发射动画特效"是一个利用WebGL技术实现的创新视觉效果,它基于HTML5的Canvas 2D接口,为用户提供了一种全屏的彩虹粒子喷泉展示。这种特效通常用于网站设计,提升用户体验,或者作为交互式艺术...

    交互式计算机图形学——基于WebGL的自顶向下技术 英文第七版

    本书名为《交互式计算机图形学——基于WebGL的自顶向下技术 英文第七版》,是电子工业出版社出版的教材,由Edward Angel与Dave Shreiner共同撰写,张荣华、宋雨等人翻译。该书的标签为“计算机图形学”和“WebGL”,...

    解决webgl输入框无法输入中文插件

    标题提到的问题——"解决webgl输入框无法输入中文插件",是WebGL应用中常见的一个挑战。通常,当用户尝试在WebGL场景中使用HTML输入框输入中文时,可能会遇到输入困难或无法输入的情况。这主要是因为WebGL与HTML元素...

    WebGL Beginner's Guide

    1. **基础概念**:介绍WebGL的起源、目标以及它在现代Web开发中的作用。解释如何在HTML5 canvas元素中启用WebGL上下文。 2. **坐标系统与视口**:讲解WebGL中的坐标系,包括视口坐标、归一化设备坐标和剪裁空间坐标...

    webgl ppt 示例 代码

    1. **上下文创建**:在JavaScript中,我们使用`canvas.getContext('webgl')`来获取WebGL渲染上下文,这是开始所有WebGL操作的起点。 2. **几何数据**:WebGL使用顶点数组来定义形状。这些顶点可以表示3D空间中的点...

    WebGL简单应用实例

    3. **着色器**:WebGL使用两种类型的着色器——顶点着色器和片段着色器。顶点着色器处理顶点数据,片段着色器决定像素颜色。 4. **缓冲区**:WebGL使用缓冲区存储顶点数据,如位置、颜色和纹理坐标。`gl.bindBuffer...

    WebGL着色器——数组

    在WebGL编程中,着色器是至关重要的组成部分,它们负责处理图形渲染的计算工作。在WebGL的上下文中,着色器分为两种主要类型:顶点着色器(Vertex Shader)和片段着色器(Fragment Shader)。这些着色器程序可以使用...

    WebGL Up and Running.pdf

    ##### WebGL——技术定义 WebGL是一种用于在Web浏览器中绘制3D图形的标准API(应用程序编程接口)。它基于OpenGL ES 2.0标准的一个子集,并且被设计成可以直接在HTML5的canvas元素上运行,无需任何插件或额外的软件...

    unity webgl 加载页面 模板 UnityWebGlTemplate.rar

    1. **Universal WebGL Template**: 这是Unity官方提供的模板,适用于Unity 2020及更高版本。Unity 2019.3引入了新的渲染管线——Universal Render Pipeline (URP),这是一个高性能、跨平台的渲染系统,旨在提高...

    WebH5视频滤镜的百搭解决方案-WebGL着色器.docx

    本文将详细介绍一种新的解决方案——WebGL着色器,它能够帮助开发者实现几乎任何类型的视频滤镜效果。 #### 二、问题概述及传统方法局限性 ##### 2.1 CSS3滤镜的局限性 在讨论WebGL着色器之前,我们首先回顾一下...

    WEBGL.rar_webgl

    此外,理解WebGL渲染管线——从模型数据到屏幕图像的过程也至关重要。 2. **WebGL上下文**:在HTML5 canvas元素上创建WebGL上下文是开始编程的第一步。理解如何获取和配置上下文,以及设置视口、清除颜色和深度缓冲...

    Three.js可视化企业实战WEBGL课(2024年1月升级版48章全)

    给大家分享一套课程——Three.js可视化企业实战WEBGL课,2024年1月最新升级48章,附源码+课件等资料下载,课程不定期更新,包更新。

    WebGL Up and Running

    - 本书最后章节提供了一个完整的实战项目——开发一个基于WebGL的赛车游戏应用。 - 该项目涵盖了从设计到实现的全过程,包括3D模型的选择、场景布局的设计、物理引擎的集成以及用户界面的开发等方面。 - 通过实际...

    交互式计算机图形学 基于WEBGL的自顶向下方法-第7版.pdf

    交互式计算机图形学 基于WEBGL的自顶向下方法 原书第7版

    webgl教程DEMO

    3. **着色器**:WebGL使用两种类型的着色器——顶点着色器和片段着色器。顶点着色器处理每个顶点,而片段着色器处理每个像素。这些着色器用GLSL(OpenGL Shading Language)编写,通过`gl.createShader()`和`gl....

    webGL公用函数库设置的0积分

    在这个场景中,我们提到的几个JavaScript文件——cuon-matrix.js, cuon-utils.js, webgl-debug.js, 和 webgl-utils.js,都是WebGL编程中常用的公用函数库,它们为开发者提供了便利的功能,简化了WebGL编程的复杂性。...

    webgl函数库(cuon-matrix、cuon-utils、webgl-debug、webgl-utils)

    本篇将详细介绍四个与WebGL相关的函数库——cuon-matrix、cuon-utils、webgl-debug以及webgl-utils,它们是WebGL开发中的常用工具,极大地简化了WebGL编程。 1. cuon-matrix: cuon-matrix是一个专门处理矩阵运算...

    每日WebGL教程

    4. **着色器(Shader)**:WebGL使用两种类型的着色器——顶点着色器和片段着色器。顶点着色器处理每个顶点,而片段着色器处理像素颜色。它们是用GLSL(OpenGL Shading Language)编写的,并通过`gl.createShader()`和...

    WebGL编程指南高清版含源码和目录

    3. **着色器**:WebGL使用两种类型的着色器——顶点着色器和片段着色器。顶点着色器处理顶点数据,而片段着色器决定像素的颜色。着色器语言GLSL用于编写这些程序。 4. **GPU编程**:WebGL的本质是GPU编程,这意味着...

    WebGL_SDK_2016_R2.zip

    1. **基本概念**:WebGL基于GPU加速,允许开发者直接在浏览器中绘制图形。它通过JavaScript与HTML5 canvas元素结合,为Web应用提供了丰富的视觉效果。 2. **三角形绘制**:学习WebGL通常从画出第一个三角形开始。...

Global site tag (gtag.js) - Google Analytics