Почему смешивание OpenGL не работает в HTC Desire? - PullRequest
5 голосов
/ 17 ноября 2010

Кто-нибудь знает, как включить смешивание в OpenGL (android) в HTC Desire.Я пытаюсь нарисовать цветные треугольники и использую альфа-значение цветового буфера, чтобы смешать их с фоном (или другим треугольником).

Это работает как на эмуляторе (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.Я могу предоставить больше кода, если кому-то это нужно ...

1 Ответ

3 голосов
/ 19 ноября 2010

Джонас, ваш комментарий об освещении кажется правильным, и теперь я думаю, что у нас есть ответ.Спецификация OpenGL ES 1.1.12 содержит состояния 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 верен, а эмулятор неверен.

...