gpt4 book ai didi

javascript - glBindTexture() 是否需要 GLuint 指针?

转载 作者:行者123 更新时间:2023-11-30 03:00:51 25 4
gpt4 key购买 nike

我正在尝试为 OpenGL/V8/JavaScript 中的纹理使用实现 OpenGL 绑定(bind)。

我的问题很简单:

OpenGL 的 glBindTexture() 方法需要一个指向 GLuint 的指针还是只需要一个有效的 GLuint?

这里的 khronos 文档说它只需要一个 GLuint。

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

问题如下:

我在 v8 JavaScript 上下文中有一个自定义数据类型,用于初始化和加载纹理。加载后,纹理通过以下方式生成:

// 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 方法时,它会在 native 端执行以下操作:

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

}

最佳答案

为什么你认为它需要一个指针?您只需将 GLuint 传递给它即可。

关于javascript - glBindTexture() 是否需要 GLuint 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650699/

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