- 小游戏webgl画个红色的点,模拟器可以显示,iphone无法显示?
// let ctx = canvas.getContext('webgl', { // antialias: true, // preserveDrawingBuffer: true // }); let ctx = canvas.getContext('webgl') // 确认WebGL支持性 if (!ctx) { wx.showToast({ title: "无法初始化WebGL,你的浏览器、操作系统或硬件等可能不支持WebGL。", icon: 'success', duration: 2000 }) } /** * 游戏主函数 */ export default class Main3d { constructor() { this.restart() } restart() { // 告诉WebGL怎样把提供的gl_Position裁剪空间坐标对应到画布像素坐标(屏幕空间) ctx.viewport(0, 0, ctx.canvas.width, ctx.canvas.height); // 使用完全不透明的黑色清除所有图像 ctx.clearColor(0.0, 0.0, 0.0, 1.0); // 用上面指定的颜色清除缓冲区 ctx.clear(ctx.COLOR_BUFFER_BIT); this.draw1Point() } draw1Point() { //顶点着色器程序 var VSHADER_SOURCE = "void main() {" + //设置坐标 "gl_Position = vec4(0.0, 0.0, 0.0, 1.0); " + //设置尺寸 "gl_PointSize = 10.0; " + "} "; //片元着色器 var FSHADER_SOURCE = "void main() {" + //设置颜色 "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);" + "}"; //编译着色器 var vertShader = ctx.createShader(ctx.VERTEX_SHADER); ctx.shaderSource(vertShader, VSHADER_SOURCE); ctx.compileShader(vertShader); var fragShader = ctx.createShader(ctx.FRAGMENT_SHADER); ctx.shaderSource(fragShader, FSHADER_SOURCE); ctx.compileShader(fragShader); //合并程序 var shaderProgram = ctx.createProgram(); ctx.attachShader(shaderProgram, vertShader); ctx.attachShader(shaderProgram, fragShader); ctx.linkProgram(shaderProgram); ctx.useProgram(shaderProgram); //绘制一个点 ctx.drawArrays(ctx.POINTS, 0, 1); } }
2020-10-09 - 小游戏+threejs或者webgl 不兼容iphone吗
跑了个threejs的demo,就画一个圆点儿,android和模拟器和浏览器都可以,就iphone不行。就几行代码: var gl = canvas.getContext('webgl'); var VSHADER_SOURCE = 'void main() {\n' + ' gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n' + ' gl_PointSize = 20.0;\n' + '}\n'; var FSHADER_SOURCE = 'void main() {\n' + ' gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n' + '}\n'; var program = gl.createProgram(); // 创建顶点着色器 var vShader = gl.createShader(gl.VERTEX_SHADER); // 创建片元着色器 var fShader = gl.createShader(gl.FRAGMENT_SHADER); // shader容器与着色器绑定 gl.shaderSource(vShader, VSHADER_SOURCE); gl.shaderSource(fShader, FSHADER_SOURCE); // 将GLSE语言编译成浏览器可用代码 gl.compileShader(vShader); gl.compileShader(fShader); // 将着色器添加到程序上 gl.attachShader(program, vShader); gl.attachShader(program, fShader); // 链接程序,在链接操作执行以后,可以任意修改shader的源代码, //对shader重新编译不会影响整个程序,除非重新链接程序 gl.linkProgram(program); // 加载并使用链接好的程序 gl.useProgram(program); gl.clearColor(0.0,0.0,0.0,1.0); gl.clear(gl.COLOR_BUFFER_BIT); gl.drawArrays(gl.POINTS, 0 ,1); [图片] 在我的iphone7 系统是ios13.x 就是一片黑色,没有红色
2020-07-22