Opengl es 使用2D纹理进行3D纹理渲染

Opengl es 使用2D纹理进行3D纹理渲染,opengl-es,texture-mapping,glsles,Opengl Es,Texture Mapping,Glsles,我想在OpenGL es 2.0环境下渲染3d纹理。所以我把3d纹理数据转换成2d纹理 3d纹理(256*256*100)->2d纹理(2560*2560) 我认为两个偏移量是相同的 offset=z3*256*256+y3*256+x3 偏移量=y2*2560+x2 但结果并不好 vec3 size3=vec3(256.0、256.0、100.0); vec2-size2=vec2(2560.0,2560.0); vec2 calc3dTo2d(vec3坐标){ vec3 offset3=

我想在OpenGL es 2.0环境下渲染3d纹理。所以我把3d纹理数据转换成2d纹理

3d纹理(256*256*100)->2d纹理(2560*2560)
我认为两个偏移量是相同的

offset=z3*256*256+y3*256+x3
偏移量=y2*2560+x2
但结果并不好

vec3 size3=vec3(256.0、256.0、100.0);
vec2-size2=vec2(2560.0,2560.0);
vec2 calc3dTo2d(vec3坐标){
vec3 offset3=vec3(coords.x*size3.x,coords.y*size3.y,coords.z*size3.z);
浮动偏移=offset3.z*size3.x*size3.y+offset3.y*size3.x+offset3.x;
浮动y=地板(偏移/尺寸2.x)/尺寸2.y;
浮动x=分形(偏移量/尺寸2.x);
返回向量2(x,y);
}

我遗漏了什么?

您使用的精度是多少?像这样的事情你需要Hipp。请注意,GLES2允许实现不支持片段着色器中的highp(但这可能只会影响较旧的设备)。我正在使用gl es2、glsl es 1.0和ios GLKit。所以用gl es2实现3d纹理是不可能的吗?我知道这个问题。纹理插值计算不适合这种情况。将楼层计算到偏移量3的值后,其工作正常