5

有谁知道如何在 HTC Desire 上启用 OpenGL (android) 中的混合。我正在尝试绘制彩色三角形并使用颜色缓冲区的 alpha 值将它们与背景(或另一个三角形)混合。

它既适用于模拟器(2.1),也适用于 htc hero 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。如果有人需要,我可以提供更多代码...

4

1 回答 1

3

Jonas,你对照明的评论似乎是正确的,所以现在我想我们有了答案。OpenGL ES 1.1.12 Specification 指出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 是正确的,而模拟器是不正确的。

于 2010-11-19T18:23:06.237 回答