glBindTexture()是否需要GLuint指针

Does glBindTexture() require a GLuint pointer?

本文关键字:GLuint 指针 是否 glBindTexture      更新时间:2023-10-16

我正在尝试在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,并将铸造的Integer值作为属性"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
}

为什么您认为它需要一个指针?你只要传一个球就行了。