这里是主域代码

var initShaders = function (gl, vshader, fshader) {
var program = createProgram(gl, vshader, fshader);
if (!program) {
console.log('无法创建程序对象');
return false;
}

gl.useProgram(program);
gl.program = program;

return true;
};


var createProgram = function (gl, vshader, fshader) {
// 创建着色器对象
   var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader);
var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader);
if (!vertexShader || !fragmentShader) {
return null;
}

// 创建程序对象
   var program = gl.createProgram();
if (!program) {
return null;
}

// 为程序对象分配顶点着色器和片元着色器
   gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);

// 连接着色器
   gl.linkProgram(program);

// 检查连接
   var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
if (!linked) {
var error = gl.getProgramInfoLog(program);
console.log('无法连接程序对象: ' + error);
gl.deleteProgram(program);
gl.deleteShader(fragmentShader);
gl.deleteShader(vertexShader);
return null;
}
return program;
};

var loadShader = function (gl, type, source) {
// 创建着色器对象
   var shader = gl.createShader(type);
if (shader == null) {
console.log('无法创建着色器');
return null;
}

// 设置着色器源代码
   gl.shaderSource(shader, source);
// 编译着色器
   gl.compileShader(shader);

// 检查着色器的编译状态
   var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
if (!compiled) {
var error = gl.getShaderInfoLog(shader);
console.log('Failed to compile shader: ' + error);
gl.deleteShader(shader);
return null;
}

return shader;
};


var VSHADER_SOURCE = `
   attribute vec4 a_Position;
   attribute vec2 a_TexCoord;
&
展开全部
收起
7回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 兔子先生

    19人对此回答表示赞同

    代码缺少了data变量的定义我没有跑起来。

    展开
    19
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Jacob

    14人对此回答表示赞同

    我新建了一个测试项目,主域用Canvas2d,按你们的官方文档写,是可以显示的,说明sharedCanvas上是有东西的,再把主域切换到webGL,就显示不出来了,只能显示一个黑框。我直接加载图片是没问题的。

    展开
    14
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Linda林晓达

    14人对此回答表示赞同

    谢谢,就是因为我改了canvas的尺寸才导致的清空

    展开
    14
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 翡冷翠诗人

    12人对此回答表示赞同

    wechatide://minicode/jweLzhmG6MYr

    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Samantha栗子

    6人对此回答表示赞同

    webGL的绘图方式十分的繁琐,官方能否在保证数据安全的前提下,提供更加简单的从开放数据域输出图形的方法?

    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 情深深

    5人对此回答表示赞同

    我又编辑了一下代码,这代码我测试过的,直接加载图片,是可以显示的,如果加载sharedCanvas就显示不出来了,你可以打开测试sharedCanvas的代码测试一下

    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 万劫

    5人对此回答表示赞同

    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部