Как установить полупрозрачный цвет в webgl? - PullRequest
0 голосов
/ 14 декабря 2011

Я красный этот урок о цветах объекта: http://learningwebgl.com/blog/?p=134

Этот код создаст красный квадрат:

squareVertexColorBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexColorBuffer);
colors = []
for (var i=0; i < 4; i++) {
  colors = colors.concat([1.0, 0.0, 0.0, 1.0]);
}
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW);

, он работает, но если я изменю код на это:

colors = colors.concat([1.0, 0.0, 0.0, 0.5]);

тогда объект не наполовину прозрачный, он розовый.Я не знаю, почему это розовый.Цвет объекта должен быть между зеленым и розовым из-за зеленого фона:

gl.clearColor(0.0, 1.0, 0.0, 1.0);
gl.enable(gl.DEPTH_TEST);

1 Ответ

2 голосов
/ 14 декабря 2011

Похоже, вы не можете включить смешивание.Попробуйте добавить следующие строки в код инициализации:

gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);

и посмотрите, если вы получите другие результаты.Режим смешивания может быть не совсем тем, что вы хотите, но он должен хотя бы показать вам, работает ли он.

Чтобы получить более подробное описание смешивания, обратитесь к Learning WebGL Lesson 8 .

...