Я хочу визуализировать 3d текстуру в среде OpenGL es 2.0.Поэтому я делаю данные трехмерной текстуры на 2d текстуру.
3d texture (256 * 256 * 100) -> 2d texture(2560 * 2560)
Я думаю, что два смещения одинаковы.
offset = z3 * 256 * 256 + y3 * 256 + x3
offset = y2 * 2560 + x2
Но результат не очень хороший.
vec3 size3 = vec3(256.0, 256.0, 100.0);
vec2 size2 = vec2(2560.0, 2560.0);
vec2 calc3dTo2d(vec3 coords) {
vec3 offset3 = vec3(coords.x * size3.x, coords.y * size3.y, coords.z * size3.z);
float offset = offset3.z * size3.x * size3.y + offset3.y * size3.x + offset3.x;
float y = floor(offset / size2.x) / size2.y;
float x = fract(offset / size2.x);
return vec2(x, y);
}
Чего мне не хватает?