6

WebGLプログラムを作成していて、GL関数glGenVertexArraysとglBindVertexArraysが必要です。WebGLにこれらに相当するものがあるかどうか誰かが知っていますか?これが私がこれまでに持っているものです:

  canvas = document.getElementById("WEB_GL_CANVAS");//Specify the viewing window

  gl = WebGLUtils.setupWebGL(canvas);
  if (!gl)
    alert("WebGL isn't available");

  gl.viewport(0, 0, canvas.width, canvas.height);
  {
    var color = getRandomColor();
    gl.clearColor((color[0] / 2) + 0.5, (color[1] / 2) + 0.5, (color[2] / 2) + 0.5, 1);
  }
  gl.enable(gl.DEPTH_TEST);


  // Create a vertex array object
  GLuint vao;
  gl.genVertexArrays( 1, &vao );//Won't work
  gl.bindVertexArray( vao );//Need a WebGL version
4

4 に答える 4

9

OES_vertex_array_object拡張機能が実装されている場合のみ。

ただし、これらの関数は必要ありません。それらがなくても問題なく実行できます。メッシュ(またはメッシュのセットなど)をレンダリングする前に、バッファをバインドし、glVertexAttribPointerとその同類を使用する必要があります。

于 2012-10-02T00:59:17.690 に答える
6

たまたま、Chrome CanaryとChromiumは先週からビルドされており、現在OES_vertex_array_objectの基本的なサポートがあります。しばらくの間、WebKitでも利用可能になっています。まだ完璧ではありません。たとえば、ANGLEのサポートはまだありません。それでも、拡張機能に対して開発したい場合は、今すぐ開始できます。

WebGLのコンテキストでどのように機能するかを確認したい場合は、OES_vertex_array_objectの動作に関する簡単なブログ投稿とデモを用意しています。

于 2012-10-02T23:37:37.860 に答える
2

OpenGL3.0の機能はWebGL2.0内で利用可能になります。たとえば、ブラウザがすでにWebGL 2.0をサポートしているかどうかを確認できます。たとえば、 http : //webglreport.com/?v = 2、または実験的な拡張機能(OpenGL 3.0の一部の機能など) WebGL1.0用が利用可能です

于 2016-09-13T20:43:01.047 に答える
2

これがEmscriptenのやり方です:

GLctx = canvas.getContext("webgl")
// Extension available from Firefox 25 and WebKit
var vaoExt = GLctx.getExtension('OES_vertex_array_object');
if (vaoExt) {
    GLctx['createVertexArray'] = function() { return vaoExt['createVertexArrayOES'](); };
    GLctx['deleteVertexArray'] = function(vao) { vaoExt['deleteVertexArrayOES'](vao); };
    GLctx['bindVertexArray'] = function(vao) { vaoExt['bindVertexArrayOES'](vao); };
    GLctx['isVertexArray'] = function(vao) { return vaoExt['isVertexArrayOES'](vao); };
}
于 2017-09-10T18:09:37.493 に答える