我试图让镜面高光超过纹理映射的objetcs。据我所知,OpenGL不直接计算纹理颜色的最终颜色(例如纯白色)的方法是调用glLightModelf(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR)
,但在OpenGL ES中不支持。OpenGL ES中的高光纹理?
那么,我该怎么做呢?我是否还需要使用另一种纹理作为特别亮点,还有另一种更简单的方法吗?
比你!
P.S.我正在使用OpenGL ES 1.x
我试图让镜面高光超过纹理映射的objetcs。据我所知,OpenGL不直接计算纹理颜色的最终颜色(例如纯白色)的方法是调用glLightModelf(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR)
,但在OpenGL ES中不支持。OpenGL ES中的高光纹理?
那么,我该怎么做呢?我是否还需要使用另一种纹理作为特别亮点,还有另一种更简单的方法吗?
比你!
P.S.我正在使用OpenGL ES 1.x
一种解决方法是两次运行:第一次使用环境渲染纹理&漫反射光照,第二次渲染将高光反射渲染到顶部(未启用纹理处理) 。
感谢您的宝贵建议,他们拯救了我的一天。唯一的问题是闪烁。我首先想到深度缓冲区和有限的深度分辨率存在问题,但事实并非如此。我不得不使用gl.glDepthFunc(GL10.GL_ALWAYS);完美融合。但是对于复杂的基元,您将能够看穿该物体。
玩了一个星期后,我发现只需在进行混合时禁用深度测试,并简单地照顾每次渲染对象的顺序。通常,您希望在绘制更近的物体之前完成远物体的所有渲染过程。 这照顾我完全有的闪烁问题。
假设OpenGL ES 1.0/1.1正确吗?在OpenGL ES 2.0中,这将是微不足道的。 – 2012-03-04 19:26:38
是的,opengl es 1.x,忘记提及它,对不起 – WaLi 2012-03-04 19:30:09