【问题标题】:Android Opengles 3.1 - Are Uniform Buffer Objects supportedAndroid Opengles 3.1 - 是否支持统一缓冲区对象
【发布时间】:2017-09-09 16:02:46
【问题描述】:

我有一个 opengles 3.1 应用程序,它可以在桌面上很好地呈现,但不能在 android 上呈现。

出错的地方是我有统一的缓冲区对象。在顶点着色器中,我有以下示例

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

使用桌面驱动程序可以正常工作,但在 android 上它会失败。我正在测试的opengles版本是3.2兼容的,函数调用在android中可用。

我已经尝试在顶点着色器中设置绑定并使用 glUniformBlockBinding 方法设置它们,两者都不能在 android 上工作(但都可以在桌面上工作)。

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

为了在 android 上支持 UBO,有什么特别需要做的吗?

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

【问题讨论】:

    标签: android opengl-es-3.1


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多