美文网首页
03.片元变量赋值

03.片元变量赋值

作者: cmd_ts | 来源:发表于2020-03-20 09:59 被阅读0次

着色器中的代码precision mediump float;表示的意思是着色器中配置的float对象会占用中等尺寸内存。
具体包含的尺寸:
highp for vertex positions,
mediump for texture coordinates,
lowp for colors.

如果不设置此参数会报错: 123.png 03.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>cmd_webgl_study3</title>
</head>
<body>
<!-- 1.创建webgl标签 -->
<canvas id="webgl" width="500" height="500"></canvas>
<script type="shader" id="vertex">
        attribute vec4 apos;
        attribute float a_PointSize;
        void main(){
            gl_PointSize = a_PointSize;
            gl_Position = apos;
        }
    </script>
<script type="shader" id="fragment">
        precision mediump float;
        uniform vec4 vColor;
        void main(){
            gl_FragColor = vColor;
        }
    </script>
<script src="./libs/webgl_libs.js"></script>
<script>
    // 2.得到canvas element
    let canvas = document.getElementById('webgl');
    // 3.得到上下文对象 context
    let gl = canvas.getContext('webgl');

    //4.编写顶点着色器源代码、实际绘制的代码,GPU:描述一个顶点的大小、位置(3d坐标) 顶点着色器
    let vertex_shader_source = document.getElementById("vertex").innerHTML;

    //5.片元着色器源代码:描述一个点的颜色 片元着色器
    let fragment_shader_source = document.getElementById("fragment").innerHTML;



    let program = create_program(gl,vertex_shader_source,fragment_shader_source);
    console.log('program:',program);

    let apos = gl.getAttribLocation(program,'apos');
    let aPointSize = gl.getAttribLocation(program,'a_PointSize');
    let a_colol = gl.getUniformLocation(program,'vColor');
    console.log('a_color:',a_colol);

    let x1 = 0.5;
    let y1 = 0.5;
    gl.vertexAttrib2f(apos,x1,y1);
    gl.vertexAttrib1f(aPointSize,60.0);

    let p = new Float32Array([0.0, 0.0, 1.0,1.0]);
    gl.uniform4fv(a_colol, p);

    // 13.设置背景色
    gl.clearColor(1.0,0.0,0.0,1.0);
    gl.clear(gl.COLOR_BUFFER_BIT);
    // 14.绘制
    gl.drawArrays(gl.POINTS,0,1);

</script>
</body>
</html>

相关文章

  • 03.片元变量赋值

    着色器中的代码precision mediump float;表示的意思是着色器中配置的float对象会占用中等尺...

  • 初学python-变量类型

    变量赋值 Python 中的变量赋值不需要类型声明。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 ...

  • Python之三元运算、集合

    一、三元运算符 三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值 格式:[on_true] if [exp...

  • 栈(C语言代码)

    一、关键点 1.指针变量取值或赋值 指针变量取值或赋值时如果有其他一元运算符注意加上括号 二. 代码 三、结果

  • 5.Go语言变量的基本用法

    变量的声明与赋值 单个变量的声明与赋值声明格式:var <变量名称> <变量类型>赋值格式:<变量名称> = <表...

  • Java-运算符(3)

    运算符 一、算术运算符 一元:自增 ++前缀++ ++变量注意: 先运算再赋值后缀++: 变量++注意: ...

  • JAVA与JS基础知识比对(一)

    js 变量 声明: var 变量名 赋值: 先声明,在赋值 声明之后直接赋值 以逗号隔开,给多个变量赋值 只声明,...

  • 第五章 python变量与运算符

    5.1 变量 5.1.1 什么时变量 变量:名字,可以将值赋值给变量,使用=赋值,如 >>>a=1#将数值1赋值给...

  • 解构赋值

    解构赋值:ES6 中新增了变量赋值的方式,从数组和对象中提取值,对变量进行赋值。 单独赋值给变量,解构赋值。 解构...

  • 常用的JavaScript简写技巧

    JavaScript 的简写技巧 变量声明 多个变量赋值 三元运算符 赋默认值 与运算符 (&&) 交换两个变量 ...

网友评论

      本文标题:03.片元变量赋值

      本文链接:https://www.haomeiwen.com/subject/skvdyhtx.html