1

WebGlコードに次の問題があります。

ERROR:

WebGL: INVALID_VALUE: getAttribLocation: no object or object deleted

私の描画機能:

function drawScene () {
    vertexPositionAttribute = gl.getAttribLocation(glProgram, "aVertexPosition");
    gl.enableVertexAttribArray(vertexPositionAttribute);

    gl.bindBuffer(gl.ARRAY_BUFFER, trianglesVerticeBuffer);
    gl.vertexAttribPointer(vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0);
    gl.drawArrays(gl.TRIANGLES, 0, 6);
}

My Shadersは、問題なくロード、作成、およびプログラムにアタッチされます。プログラムをリンクして使用しました。しかし、それでも私の間違いを見つけることができません。

バーテックス:

attribute vec3 aVertexPosition;
void main(void) {
gl_Position = vec4(aVertexPosition, 1.0);
}

断片:

void main(void) {
    gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

手伝ってくれてありがとう

4

1 に答える 1

1

initShaders()問題は、の作成が完了する前にシーンを描画しようとしていることですglProgram。シェーダーファイルを非同期でダウンロードしているため、シェーダーがダウンロードdrawScene()される前に関数が実行されていることに注意してください。

これを修正するには、loadFile()関数の次の行を変更して、次のように同期要求を実行します。

request.open('GET', url, false);

コードの動作バージョンへのリンクは次のとおりです

于 2013-02-18T23:57:30.150 に答える