0

我正在尝试在一个小型 Mac 应用程序中绘制点精灵。我希望每个精灵都有自己的大小,并且我知道 OpenGL ES 具有客户端状态“GL_POINT_SIZE_ARRAY_OES”。

我做了一些谷歌搜索,发现有一个类似的值“GL_POINT_SIZE_ARRAY_APPLE”(你认为)应该做同样的事情。但是,出于某种原因,它似乎没有。这是我的绘图代码:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_POINT_SIZE_ARRAY_APPLE);

glVertexPointer(2, GL_FLOAT, sizeof(SpriteData), spriteVertices);
glPointSizePointerAPPLE(GL_FLOAT, sizeof(SpriteData), spriteVertices + sizeof(LocationF));

glDrawArrays(GL_POINTS, 0, spriteCount);

glDisableClientState(GL_POINT_SIZE_ARRAY_APPLE);
glDisableClientState(GL_VERTEX_ARRAY);

SpriteData 是一个包含每个精灵的顶点/大小数据的结构。spriteVertices 只是该结构的交错数组。

顶点指针工作正常;它正在绘制精灵,但似乎忽略了它们的大小值。相反,它默认为 glPointSize() 设置的值。

尽管这段代码编译时没有任何警告,但在我看来,谷歌搜索“GL_POINT_SIZE_ARRAY_APPLE”几乎没有结果。这是一个无用的参数吗?如果是这样,我还能如何实现我想要的?

4

1 回答 1

0

没有公开扩展的官方 OpenGLGL_POINT_SIZE_ARRAY_APPLE扩展。这可能是 Apple 标头中的一些碎屑,但您不应该使用它。只需使用通用顶点数组并使用您传递的值作为点大小。

如果你想要跨平台的代码,你应该避免依赖系统的头文件。相反,使用适当的 OpenGL 加载器,它带有跨平台的标头,其中包含系统相关的非标准碎屑。

于 2013-03-30T00:39:22.543 回答