我正在尝试在一个小型 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”几乎没有结果。这是一个无用的参数吗?如果是这样,我还能如何实现我想要的?