生成纹理: GLuint 还是 Array?

3

首先,我对C/C++的了解很少,所以我的知识可能有所欠缺,但我目前正在尝试将OpenGL的一些功能移植到AS3,并查看OpenGL的glGenTextures()方法。

http://www.opengl.org/sdk/docs/man/xhtml/glGenTextures.xml

这个方法需要一对参数,但我的问题是针对后面的参数。
GLuint * textures
我查阅了 GLuint 的类型数据,它似乎是一个32位无符号整数,然而文档接着说:
textures 指定一个数组,用于存储生成的纹理名称。
那么,GLuint 是一个数组还是一个无符号整数?如果这是某种指向数组内存地址的指针(不知道这也可能是一种可能性?),那么有没有人推荐在 ActionScript 中实现类似功能的等效方式,考虑到参数是按值而不是按引用在 ActionScript 中传递的。
非常感谢 SO 上所有好心人。
Gary Paluk
2个回答

7

你是否熟悉指针符号?这个函数确实接受一个数组:一个由GLuint数据组成的数组。因此,在创建纹理时,你可以创建一个纹理并简单地指向那个GLuint的地址,或者通过传递指向第一个纹理的指针来创建多个纹理(这基本上就是数组的工作方式)。

GLuint myTexture;
glGenTextures(1, &myTexture); // generate just one texture

GLuint myTextures[32];
glGenTextures(32, myTextures); // generate 32 textures

GLuint myOtherTexture;
GLuint* myTexturePointer = &myOtherTexture;
glGenTextures(1, myTexturePointer); // generate 1 texture using a pointer

GLuint* moreTextures = new GLuint[16];
// generate only 8 textures in the latter half of the array
glGenTextures(8, moreTextures + 8);

2
完美……我现在要尝试实现这个!因为我使用ActionScript编码,所以我对指针不是非常熟悉,但是你的例子使它非常容易理解,所以谢谢你!^_^ 这是那种我知道它,但从未使用过的东西!这也将是这个项目中非常有用的知识,干杯!:) - Gary Paluk

1

GLuint 是一个无符号整数。

你可以在头文件中看到它的定义:

typedef unsigned int GLuint;

如果你之前没有用过typedef,这里有一个解释typedef的维基页面


这就引出了一个问题,文档中指定的纹理GLuint数组是什么意思? - Gary Paluk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接