WebGL通过getAttribLocation向顶点坐标器传递信息

<canvas style="border: red solid 3px;" id=‘webgl‘ width=‘500‘ height=‘500‘>不支持</canvas>
<script>
    //顶点着色器程序
    var VSH =
        ‘attribute vec4 a_Position;\n‘ +
        ‘attribute float a_PointSize;\n‘ +
        ‘void main(){\n‘ +
            ‘gl_Position = a_Position;\n‘ + //坐标
            ‘gl_PointSize = a_PointSize;\n‘ + //尺寸
        ‘}\n‘;

    //片元着色器程序
    var FSH =
        ‘void main(){\n‘ +
            ‘gl_FragColor = vec4(1.0,0.5,0.9,1.0);\n‘ + //颜色
        ‘}\n‘;

    var canvas = document.getElementById(‘webgl‘);
    var gl = getWebGLContext(canvas);
    initShaders(gl, VSH, FSH); //初始化着色器

    var a_Position = gl.getAttribLocation(gl.program, ‘a_Position‘); //获取attribute -> a_Position变量的存储地址
    gl.vertexAttrib3f(a_Position, 0.5, 0.0, 0.0);    //将顶点的位置传给attribute变量

    var a_PointSize = gl.getAttribLocation(gl.program, ‘a_PointSize‘); //获取attribute -> a_PointSize变量的存储地址
    gl.vertexAttrib1f(a_PointSize, 150.0);    //将顶点的位置传给attribute变量

    gl.clearColor(0.0, 0.0, 1.0, 1.0); //指定背景色
    gl.clear(gl.COLOR_BUFFER_BIT); //填充
    gl.drawArrays(gl.POINTS, 0, 1); //绘制一个点
    /*
        因为绘制的是单独的点,所以是gl.POINTS
        第二个参数为0,表示从第一个顶点画起
        第三个参数为1,表示在程序中只绘制了一个点
    */

</script>

原文地址:https://www.cnblogs.com/tongyuzhe/p/10452969.html

时间: 2024-08-12 13:12:18

WebGL通过getAttribLocation向顶点坐标器传递信息的相关文章

[WebGL入门]九,顶点缓存的基础

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 局部坐标 使用WebGL可以绘制各种各样的3D模型,而且,还可以绘制点和线,决定绘制什么肯定需要顶点.没有顶点的话,也就没有多边形了,因为没有办法进行点和线的绘制了.所以,WebGL的编程中一定要处理顶点情报.而且,顶点中有必须要包含的情报,那就是顶点的位置坐标.既然顶点的位置坐标是必须的,那

顶点着色器 学习笔记

顶点着色器 shader的三种变量类型 uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息:如果在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用:只读常量数据: attribute变量是只能在vertex shader中使用的变量:一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等: varying变量是vertex和fragment shader之间做数据传递用.一般vertex

[WebGL入门]六,顶点和多边形

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 可以在三维空间中描画的东西 要说在WebGL的世界里能够描画什么,其实任何东西都可以描画.而描画的最基本的东西就是下面几种. ?点 ?线段 ?三角形 虽然在OpenGL中提供了矩形的绘制,但是WebGL中基本上只能绘制上面的三种类型.和二维世界不同,比如像HTML中的img标签那样,简单的在画

顶点着色器和片断着色器

顶点和片段着色器 必备知识 熟悉Stage3D API.最好之前使用过VertexBuffer.在继续这个教程之前一定要先阅读本系列的第一个教程(Stage3D原理).    所需软件 Flash Builder 4.5 Premium (Download trial) Flash Professional CS5.5 (Download trial) 在本章中,你将对着色器(Shaders)有一个大概的了解.着色器是Stage3D渲染管道的核心.你将学到顶点和片段着色器是个什么东东,它们在3D

OpenGL ES 2.0 顶点着色器的妙用

1.飘扬的旗帜(水面起伏) 基本原理 绘制一帧画面时由顶点着色器根据一定的规则变换各个顶点的位置,即可得到旗帜迎风飘扬的效果. 为了使旗帜的飘动过程比较平滑,采用基于正弦曲线的顶点位置变换规则. 计算方法 传入顶点着色器的原始顶点的Z{X|Y|Z}坐标都是相同的(本案例为0),经过顶点着色器变换后顶点的Z{X|Y|Z}坐标是根据正弦曲线分布的 首先计算出当前处理顶点的X坐标与最左侧顶点X坐标的差值,即X距离 然后根据距离与角度的换算率将X距离换算为当前顶点与最左侧顶点的角度差(tempAngle

顶点着色器详解 (Vertex Shaders)

学习了顶点处理,你就知道固定功能流水线怎么将顶点从模型空间坐标系统转化到屏幕空间坐标系统.虽然固定功能流水线也可以通过设置渲染状态和参数来改变最终输出的结果,但是它的整体功能还是受限.当我们想实现一个外来的光照模型,外来的Fog或者点大小计算方式,等等,我们可能就放弃使用固定功能流水线,转而使用CPU来实现这些计算. 使用vertex shaders,它用一段小程序替换固定功能处理.这段小程序的输入是模型空间的顶点,输出齐次剪裁空间的顶点,并且还携带一些信息,如:per-vertex diffu

向顶点着色器提供顶点参数

对于 CG/HLSL 顶点程序,模型网格顶点数据被作为输入传递给顶点着色器函数.每个输入都需要一个语义来详细指定.比如,POSITION输入是 顶点的位置,NORMAL是顶点的法线. 通常,顶点数据输入被声明成一个结构体,而不是一个个的罗列他们.几个常用的顶点结构体都被丁艳在UnityCG.cginc include file里面了,并且大多数情况下,这些都够用了.这些结构体是: appdata_base:位置.法线还有一个贴图坐标 appdata_tan:位置.切线.法线.还有一个贴图坐标 a

OpenGL学习随笔(四)-- 顶点着色器(VertexShader)

顶点着色器对顶点实现了一种通用的可编程方法. 顶点着色器的输入数据由下面组成: Attributes:使用顶点数组封装每个顶点的数据,一般用于每个顶点都各不相同的变量,如顶点位置.颜色等. Uniforms:顶点着色器使用的常量数据,不能被着色器修改,一般用于对同一组顶点组成的单个3D物体中所有顶点都相同的变量,如当前光源的位置. Samplers:这个是可选的,一种特殊的uniforms,表示顶点着色器使用的纹理. Shader program:顶点着色器的源码或可执行文件,描述了将对顶点执行

unity shader 学习 (2)Vs【顶点着色器】 和 Ps【像素着色器】

上一章我写了渲染管线,中间提到了shader的作用,我们的大shader同学主要就是负责被CPU指派到GPU中做一些如顶点转换,关照模型,光栅化等操作的. 大shader有两种类型,他们分别是Vs[顶点着色器] 和 Ps[像素着色器].. 他们可以同时存在,也可以分开存在,没有任何使用限制. 当时如果同时存在的话,必须Vs执行完成后再交给Ps处理. 他们两个家伙是配合固定流程管线而存在的.