gpt4 book ai didi

google-chrome - WebGL - 未定义 initGL

转载 作者:行者123 更新时间:2023-12-02 04:46:11 25 4
gpt4 key购买 nike

我正在尝试使用 WebGL 绘制三角形和正方形的教程。 http://learningwebgl.com/blog/?p=28那个。

所以当我到达第一个测试区时。我得到了错误:

Uncaught ReferenceError: initGL is not defined.

这是我的代码:

var triangleVertexPositionBuffer;
var squareVertexPositionBuffer;

function webGLStart() {
var canvas = document.getElementById("lesson01-canvas");
initGL(document.getElementById("lesson01-canvas"));
initShaders();
initBuffers();

gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.enable(gl.DEPTH_TEST);

drawScene();
}

function initBuffers() {
// driehoek
triangleVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
var vertices = [
0.0, 1.0, 0.0,
-1.0, -1.0, 0.0,
1.0, -1.0, 0.0
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
triangleVertexPositionBuffer.itemSize = 3;
triangleVertexPositionBuffer.numItems = 3;

// vierkant
squareVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
vertices = [
1.0, 1.0, 0.0,
-1.0, 1.0, 0.0,
1.0, -1.0, 0.0,
-1.0, -1.0, 0.0
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
squareVertexPositionBuffer.itemSize = 3;
squareVertexPositionBuffer.numItems = 4;
}

function drawScene() {
gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

mat4.perspective(pMatrix, 45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0);
mat4.identity(mvMatrix);
mat4.translate(mvMatrix, mvMatrix, [-1.5, 0.0, -7.0]);
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute,
triangleVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLES, 0, triangleVertexPositionBuffer.numItems);
mat4.translate(mvMatrix, mvMatrix, [3.0, 0.0, 0.0]);
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute,
squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLE_STRIP, 0, squareVertexPositionBuffer.numItems);
}

最佳答案

这些函数(例如 initGL)不是 WebGL 的一部分

大概它们是教程中的其他函数(或者应该被提到的)——也许应该包含一个 JavaScript 库?看来 initGL 也应该设置全局 gl 变量。

例如,参见 "initGL"同一站点的(我通过搜索“WebGL initGL”找到的)。您必须寻找其他定义(initShaders 在哪里?)来修补给定的代码..

关于google-chrome - WebGL - 未定义 initGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com