1

OpenGL / V8/JavaScriptでテクスチャを使用するためのOpenGLバインディングを実装しようとしています。

私の質問はとても簡単です:

OpenGLのglBindTexture()メソッドはGLuintへのポインターを必要としますか、それとも有効なGLuintのみを必要としますか?

ここにあるkhronosのドキュメントには、GLuintのみが必要であると記載されています。

http://www.khronos.org/opengles/documentation/opengles1_0/html/glBindTexture.html

問題は次のとおりです。

テクスチャの初期化とロードに使用されるv8JavaScriptコンテキストにカスタムデータ型があります。ロード後、テクスチャは次の方法で生成されました。

// blabla...
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) image_data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
// ...blabla
return texture;

したがって、このメソッドはc ++側からGLuintを返し、キャストされた整数値をプロパティ「id」としてJavaScriptコンテキストのオブジェクトにアタッチします。

var texture = new Texture('./texture.png');
texture.load();
texture.onload = function() {
  gl.bindTexture(gl.TEXTURE_2D, texture.id); // this is the casted v8::Integer value
};

v8のグローバルgl(名前空間)オブジェクトでbindTextureメソッドを使用すると、ネイティブ側で次のようになります。

v8::Handle<v8::Value> GLglBindTextureCallback(const v8::Arguments& args) {

  // blabla...
  int arg0 = args[0]->IntegerValue();
  unsigned int arg1 = args[1]->Uint32Value();
  glBindTexture((GLenum) arg0, (GLuint) arg1);
  // ... blabla

}
4

1 に答える 1

3

なぜポインタが必要だと思いますか?Gluint を渡すだけです。

于 2012-07-25T16:19:33.570 に答える