首页 > 其他分享 >WebGL初学:使用WebGL绘制一个点

WebGL初学:使用WebGL绘制一个点

时间:2023-04-05 19:11:14浏览次数:42  
标签:一个点 WebGL 初学 program 片元 var gl 着色器

示例代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>使用WebGL绘制一个点</title>
</head>

<body>
    <!--canvas标签创建一个宽高均为500像素,背景为蓝色的矩形画布-->
    <canvas id="webgl" width="500" height="500" style="background-color: blue"></canvas>


    <script>
        //通过getElementById()方法获取canvas画布
        var canvas = document.getElementById('webgl');
        //通过方法getContext()获取WebGL上下文
        //返回对象具有一系列绘制渲染三维场景的方法,也就是WebGL API。
        var gl = canvas.getContext('webgl');

        //顶点着色器源码
        var vertexShaderSource = '' +
            'void main(){' +
            //给内置变量gl_PointSize赋值像素大小
            '   gl_PointSize=20.0;' +
            //顶点位置,位于坐标原点
            '   gl_Position =vec4(0.0,0.0,0.0,1.0);' +
            '}';

        //片元着色器源码
        var fragShaderSource = '' +
            'void main(){' +
            //定义片元颜色
            '   gl_FragColor = vec4(1.0,0.0,0.0,1.0);' +
            '}';

        //初始化着色器
        var program = initShader(gl, vertexShaderSource, fragShaderSource);
        
        //开始绘制,显示器显示结果
        gl.drawArrays(gl.POINTS, 0, 1);

        //声明初始化着色器函数
        function initShader(gl, vertexShaderSource, fragmentShaderSource) {
            //创建顶点着色器对象
            var vertexShader = gl.createShader(gl.VERTEX_SHADER);
            //创建片元着色器对象
            var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
            //引入顶点、片元着色器源代码
            gl.shaderSource(vertexShader, vertexShaderSource);
            gl.shaderSource(fragmentShader, fragmentShaderSource);
            //编译顶点、片元着色器
            gl.compileShader(vertexShader);
            gl.compileShader(fragmentShader);

            //创建程序对象program
            var program = gl.createProgram();
            //附着顶点着色器和片元着色器到program
            gl.attachShader(program, vertexShader);
            gl.attachShader(program, fragmentShader);
            //链接program
            gl.linkProgram(program);
            //使用program
            gl.useProgram(program);
            //返回程序program对象
            return program;
        }
    </script>
</body>

</html>

标签:一个点,WebGL,初学,program,片元,var,gl,着色器
From: https://www.cnblogs.com/marshban/p/17290528.html

相关文章

  • WebGL Fundamentals
    WebGL(WebGraphicsLibrary)isoftenthoughtofasa3DAPI.Peoplethink"I'lluseWebGLandmagicI'llgetcool3d".InrealityWebGLisjustarasterizationengine.Itdrawspoints,lines,andtrianglesbasedoncodeyousupply.Ge......
  • WebGL-实例化绘制
    今天来学习webgl一个重要功能:InstancedDrawing(实例化绘制),内容翻译自webgl学习网站webglfundamentals(由于英语水平尽量按原文翻译):https://webglfundamentals.org/webgl/lessons/webgl-instanced-drawing.html。WebGL下个版本(WebGL2.0)有一个功能叫实例化绘制。它的基本思想......
  • PHP初学体会
     近来,闲来无事,把去年买的《PHP开发实战权威指南》通读1遍和精读1遍。总体感觉,不是很难。相比,C/C++/Java要简单许多,可能是因为已经学习过好几门语言了,所以理解起来相对比较轻松。IDE使用的是WampServer,安装之后,把php文件放进去,就可以通过url直接访问了。不需要编译,能立即看到效果......
  • Lights:奇妙的WebGL 3D体验
    了解WebGL技术的人应该都知道,WebGL是一种3D绘图标准,通过该技术标准Web开发人员可以借助系统显卡在浏览器里更流畅地展示3D场景和模型,创建复杂的导航和数据视觉化。而Lights就是这样一款拥有强大WebGL显示功能的产品,无需插件便可在支持WebGL的浏览器(如Chrome、Safari和Firefox等)中......
  • 初学者关于下载安装python第三方库的两种常用方式
    一、利用PyCharm直接下载方式一:PyCharm是一个Python使用者常用的pythonIDE(集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以......
  • threejs-camera&controls&renderer(WebGLRenderer)
    ArrayCamera:一般用于,展示益、一个场景存在多个物体,每个物体各自拥有自己的视角的这种场景。CubeCamera:一次性创建六个方位的相机(类似于正方体六个面,立方全景图中所有方......
  • 初学Python,版本如何选择?
     早在四年多以前,在我进入英才网之前,去面试过一家海归创业的公司。他们需要的是有unix开发经验的技术人员,但是因为他们当时所处的阶段对很多成熟技术人员不是很吸引,所......
  • 安装Windows Server 2022 - 初学者系列 - 学习者系列文章
          这天要写一个关于系统部署的系列文章,涉及到WindowsServer2022操作系统的安装,所以就写了此文。Windows系列的操作系统安装,以前的博文中都有介绍,这里再次做一......
  • LSTM初学习
    首先引入循环神经网络在传统的神经网络中,很难利用之前的事件对当前事件进行分类,而循环神经网路就可以改善这一点。循环神经网络(下面简称RNNs)可以通过不停的将信息循环操......
  • SAP 后端开发的初学者,除了掌握 ABAP 之外,还需要学习什么知识?
    有朋友咨询:我是一名新从事sap后端的小白人员,想请问您从事后端开发除了要熟练掌握ABAP以外,还需要具备什么知识作基础呢?我的回答:你说的后端开发,我能理解成SAP后......