Android Opengles 3.1 - 是支持的统一缓冲区对象



我有一个opengles 3.1应用程序,它在桌面上呈现良好,但在Android上无法呈现。

出错的一点是当我有统一的缓冲区对象时。例如,在顶点着色器中,我有以下内容

layout (std140, binding = 0) uniform matrixUbo
{
  mat4 projection;
  mat4 view;
};

这使用桌面驱动程序工作正常,但在安卓上它失败了。我正在测试的opengles版本兼容3.2,函数调用在Android中可用。

我已经尝试了在顶点着色器中设置绑定并使用glUniformBlockBinding方法设置它们,两者都不适用于Android(但两者都适用于桌面(。

如果我不使用这些矩阵,那么对象确实可以渲染正常(我可以在我的 android 手机上看到它们正常(,但是当我包含这些矩阵时,没有绘制任何内容告诉我矩阵充满了零。

在安卓上支持UBO有什么特别的事情需要做吗?

我很乐意根据需要提供更多信息。

为了回答我自己的问题,它们在android opengl es 3.1上受支持,但是当您更新数据时,您需要使用ByteBuffer而不是FloatBuffer,即使函数调用支持它。奇怪的问题和调试的痛苦!!

最新更新