2011-10-20 21 views
5

Birkaç saat boyunca derinlik ve normal harita dokularıyla 2.5D motoru yapmaya çalışıyorum, burada kullanılanların aksine Linky. Fragman gölgelendiricisinde bir derinlik haritasının çizilmesinin bir dokudan çizilmesinin imkansız olduğu düşünüldü. ES 2.0 gl_fragDepth değişkenini kaybettim iOS için bir öğretici buldum. GL_MIN/GL_MAX modu ile glBlendEquation kullandılar. bir framebuffer-dokuya Linky. Maalesef, GLES20.glBlendEquation uygulaması, telefonumda (SGS 1/2), UnsupportedOperationException ile kilitleniyor. Yani bu işlevi herhangi bir başarıya kullanıp kullanmadığımı merak ediyorum. GL_MIN/GL_MAX da Android Opengl ES 2.0 özelliğinden yok gibi görünüyor, bu yüzden muhtemelen şansım kalmadı ... Herhangi bir fikrin var mı?Android GLES20.glBlendEquation çalışmıyor

BTW GL11Ext'te çalışıyor gibi görünüyor, ancak normal haritalama için parça gölgelendiricisini kullandığım için bu benden çalışmaz.

+0

Bunun için bir çözüm buldunuz mu? – Jave

+0

@jave Hayır Buna daha fazla bakmadım, herhangi bir forumda herhangi bir geri bildirim almadım. Bu yüzden benim varsayım, android OpenGL ES 2.0'da uygulanmadığıdır. Belki bu işletim sisteminin yeni sürümlerinde giderilmiştir? Bunu android işletim sistemi v2.3 kullanarak test ettim. –

+0

Tamam, bu sorunu birkaç gün önce kendimle karşılaştım, ama ya bir çözüm bulamadım. (Bu arada Android 2.2'yi kullanma). Sorunu çözerseniz, nasıl yaptığınızı görmek isterim. – Jave

cevap

1

benim Vega tabletin (Tegra) üzerinde deney ve bu benim için çalıştı:

fragmanı shader:

#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 
} 

Oldukça kolay, ha? Ama korkarım bu sadece NV olacak.

İlgili konular