有谁知道如何在 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
};
附言。如果有人需要,我可以提供更多代码...
最佳答案
Jonas,您关于照明的评论似乎是正确的,所以现在我想我们有了答案。 OpenGL ES 1.1.12 规范声明光照产生的 A 值是与 dcm 关联的 alpha 值
,其中 dcm 是 Material 漫反射颜色。
如果您启用了COLOR_MATERIAL
,那么 Material 漫反射颜色和 Material 环境颜色都取自当前顶点颜色。这意味着 Desire 不正确,而模拟器是正确的。
如果您已禁用 COLROR_MATERIAL
(默认状态),则漫反射颜色 Material 使用 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, ptrTo4Floats)
设置。这意味着 Desire 是正确的,而模拟器是不正确的。
关于opengl-es - 为什么 OpenGL 混合在 HTC Desire 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209054/