【发布时间】:2015-05-09 07:23:19
【问题描述】:
我想在 OpenGL ES 中淡出一个 VBO 对象。 VBO 使用 RGBA 格式 GL_UNSIGNED_BYTE 绘制,如下所示:
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer( 4, GL_UNSIGNED_BYTE, ....
我相当肯定我应该像这样设置混合:
glEnable( GL_BLEND );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glColor4f( 1, 1, 1, alpha ); // I will be changing alpha from 1 to 0
但它不会褪色,这是有道理的,因为我认为 src alpha 来自我的固定 VBO。
所以我想也许我应该只将 3 个字节传递给保持我的 VBO 颜色的驱动程序,然后 alpha 将来自 glColor4f 命令。
glColorPointer( 3, GL_UNSIGNED_BYTE, ....
但由于不明原因(使用 Xcode 开发 iPad)而崩溃,我仍在尝试破译。我认为我的所有 glColorPointer 偏移量仍然可以 - 我在 MyVertexObject 中仍然有所有 4 个字节(RGBA)所以我不认为这是一个填充问题 - 我没有更改 glColorPointer 命令中的任何偏移值,只是更改了4到3。
如果我禁用 GL_COLOR_ARRAY 淡化效果很好,但现在我失去了颜色,它使用的是我上面设置的白色。
所以我被困住了,因为我似乎无法将 Alpha 通道与 RGB 颜色分开控制。还有另一种方法可以用颜色淡化 VBO 吗?谢谢。
【问题讨论】:
标签: opengl-es fade alpha vbo blend