Android OpenGL ES中的镜面反射纹理?

Android OpenGL ES中的镜面反射纹理?,android,opengl-es,lighting,Android,Opengl Es,Lighting,我试图在纹理贴图的对象上获得镜面反射高光。据我所知,OpenGL不计算纹理颜色上的最终颜色(例如纯白色)的唯一直接方法是调用glLightModelf(GL\u LIGHT\u MODEL\u color\u控件,GL\u SEPARATE\u SPECULAR\u color),但这在OpenGL ES中不受支持 那么,我该怎么做呢?我是否必须为镜面高光使用另一种纹理,当然,还有其他更简单的方法吗 比你强 另外,我正在使用OpenGL ES 1.x,一个解决方法是分两次运行:第一次使用环境光和

我试图在纹理贴图的对象上获得镜面反射高光。据我所知,OpenGL不计算纹理颜色上的最终颜色(例如纯白色)的唯一直接方法是调用
glLightModelf(GL\u LIGHT\u MODEL\u color\u控件,GL\u SEPARATE\u SPECULAR\u color)
,但这在OpenGL ES中不受支持

那么,我该怎么做呢?我是否必须为镜面高光使用另一种纹理,当然,还有其他更简单的方法吗

比你强


另外,我正在使用OpenGL ES 1.x,一个解决方法是分两次运行:第一次使用环境光和漫反射光渲染纹理,第二次使用环境光和漫反射光渲染镜面反射高光(不启用纹理)。

感谢大家的建议,他们帮我省了一天的时间。唯一的问题是闪烁。我最初认为深度缓冲区和有限的深度分辨率有问题,但事实并非如此。我必须使用gl.glDepthFunc(GL10.gl_总是);完美的混合。但是,对于复杂的基本体,您将能够看穿对象

在玩了一周之后,我发现在进行混合时,只需禁用深度测试,并且只需注意每次渲染对象的顺序。通常,您希望在绘制较近的渲染过程之前完成远对象的所有渲染过程。
这完全解决了我遇到的闪烁问题。

假设OpenGL ES 1.0/1.1正确吗?在OpenGL ES 2.0中,这将是微不足道的。是的,OpenGL ES 1.x,忘了提到它,抱歉+1当然在这种情况下,你应该使用加法混合(
glBlendFunc(GL\u ONE,GL\u ONE)
)和使用
glDepthFunc(GL\u EQUAL)
的深度测试。这似乎是正确的方法,但我无法使它完美工作。使用混合功能
glBlendFunc(GL_ONE,GL_ONE)
整个对象看起来非常明亮(光线为白色),也许使用其他混合功能效果会更好,但我不知道是哪一个好,我的坏,我忘了将未混合对象的材质更改为0 ambient和0 diffuse,因此,只有镜面反射高光是彩色的。现在可以了!谢谢你们!