gpt4 book ai didi

android - 将二维数组传递到 GLES opengl 着色器

转载 作者:行者123 更新时间:2023-11-30 01:50:16 24 4
gpt4 key购买 nike

我有一个二维 float 组(在本例中,它代表一个具有 R G B 值的 256 色调色板)

static float[][] glColorPaletteArray = new float[256][3];

我填充数组,现在想将它传递给 GLES。我如何在android中传递一个二维数组?我试试

GLES20.glUniform3fv(paletteLoc,256,glColorPaletteArray,0);

但它提示期待一维数组(发现 float[][] 期待 float[])。

着色器需要一个 vec3 制服,即

uniform vec3 palette[256];

所以我需要保留二维数组,以便 RGB 分量是单独的 float 。

将 2D 数组正确传递给 GLES 着色器的秘诀是什么,这样我就可以通过使用访问着色器中的 RGB 值

int red = palette[100].r;

最佳答案

简短的回答是:您不能将二维数组传递给着色器。

为了将二维数组传递给 OpenGL,必须展平数组。这相对容易,例如,可以按如下方式完成:

static float[][] glColorPaletteArray = new float[256][3];
static float[] openglArray = new float[256*3];

for (int i = 0; i < 256; i++)
for (int j = 0; j < 3; j++)
openglArray[i * 3 + j] = glColorPalletArray[i][j];

但我建议,如果可能的话,您可以直接在一维中定义数组。

关于android - 将二维数组传递到 GLES opengl 着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33164064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com