簡體   English   中英

將2D數組傳遞到GLES opengl着色器

[英]Passing 2D array into GLES opengl shader

我有一個2D浮點數組(在這種情況下,它代表RGB值的256個調色板)

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

我填充數組,現在想將其傳遞給GLES。 如何在Android中傳遞2D數組? 我嘗試

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

但是它抱怨期望使用一維數組(發現float [] []期望使用float [])。

着色器期望vec3統一,即

uniform vec3 palette[256];

所以我需要保留2D數組,以便RGB分量是獨立的浮點數。

將2D數組正確傳遞到GLES着色器的秘訣是什么,這樣我就可以使用來訪問着色器中的RGB值

int red = palette[100].r;

簡短的答案是:您不能將2D數組傳遞給着色器。

為了將2D數組傳遞給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];

但是我建議,如果可能的話,請直接用一維定義數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM