有没有人知道如何在HTC Desire上启用OpenGL(android)混合。我试图绘制彩色三角形并使用颜色缓冲区的alpha值将它们与背景(或另一个三角形)混合。
它既适用于模拟器(2.1),也适用于htc英雄2.1,但不适用于2.2。英雄和欲望之间是否存在一些硬件差异?
代码中的主要内容是(不按顺序):
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
private final static float[] colors = {
1f, 0f, 0f, 0.5f, // point 0 red
1f, 0f, 0f, 0.5f, // point 1 red
1f, 0f, 0f, 0.5f, // point 2 red
1f, 0f, 0f, 0.5f, // point 3 red
1f, 0f, 0f, 0.5f, // point 4 red
1f, 0f, 0f, 0.5f, // point 5 red
1f, 0f, 0f, 0.5f, // point 6 red
1f, 0f, 0f, 0.5f, // point 7 red
};
PS。如果有人需要,我可以提供更多代码......
答案 0 :(得分:3)
The value of A produced by lighting is the alpha value associated with dcm
,其中dcm是材质漫反射颜色。
如果您启用了COLOR_MATERIAL
,则材质漫反射颜色和材质环境颜色都是从当前顶点颜色中获取的。这意味着Desire不正确,并且模拟器是正确的。
如果您已禁用COLROR_MATERIAL
(默认状态),则漫反射颜色材质将设置为glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, ptrTo4Floats)
。这意味着Desire是正确的,并且模拟器是不正确的。