use*_*998 5 android pixel-shading opengl-es-2.0
我已经尝试用几周的时间制作一个具有深度和法线贴图纹理的2.5D引擎,与此处使用的Linky不同.在认为由于ES 2.0缺少gl_fragDepth变量之后,从纹理中在片段着色器中绘制深度图是不可能的,我找到了iOS教程,他们使用glBlendEquation和模式GL_MIN/GL_MAX来"伪造"片段的深度缓冲一个帧缓冲纹理Linky.不幸的是,GLES20.glBlendEquation使我的手机(SGS 1/2)上的应用程序崩溃,并且出现UnsupportedOperationException.所以我想知道是否有人使用此功能取得任何成功?Android Opengl ES 2.0规范中似乎也缺少GL_MIN/GL_MAX,所以我可能在这里运气不好......有什么想法吗?
BTW它似乎在GL11Ext中工作,但由于我使用片段着色器进行法线贴图,这对我不起作用.
我正在我的 Vega 平板电脑 (Tegra) 上进行实验,这对我有用:
片段着色器:
#extension GL_NV_shader_framebuffer_fetch : require
// makes gl_LastFragColor accessible
precision highp float;
varying vec2 v_texcoord;
uniform sampler2D n_sampler;
void main()
{
vec4 v_tex = texture2D(n_sampler, v_texcoord);
gl_FragColor = min(gl_LastFragColor, v_tex); // MIN blending
}
Run Code Online (Sandbox Code Playgroud)
很容易吧?但恐怕这将仅限于 NV。
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |