根据我的理解,如果我禁用GL_BLEND
,则根本不会发生混合。
所以我不需要做glClear(GL_COLOR_BUFFER_BIT)
。
我正在使用GLES20进行Android编程。我在下面添加了这一行。
GLES20.glDisable(GLES20.GL_BLEND);
如果我不添加glClear(GL_COLOR_BUFFER_BIT)
,除了Nexus 4之外,所有其他设备都能正常运行。
在Nexus 4上,一次通过(其他通行证正常工作),只渲染部分区域。
如果我添加glClear(GL_COLOR_BUFFER_BIT)
,那么现在Nexus 4运行良好。
答案 0 :(得分:1)
如果禁用GL_BLEND
,则绘制缓冲区的片段将被覆盖(如果被绘制)。
如果禁用混合并在每个帧中写入绘制缓冲区的每个片段,则清除绘制缓冲区是没用的,因为每个片段都将在绘制过程中设置。
glClear(GL_COLOR_BUFFER_BIT)
除了用glClearColor
设置的常量颜色写入每个片段外,别无其他。
注意,您必须确保每个片段都写入每个帧。例如,如果启用GL_DEPTH_TEST
,则无论如何都必须glClear(GL_DEPTH_BUFFER_BIT
。