Как я устанавливаю непрозрачность вершины в OpenGL?

var img_array = ["bomb.gif", "frown.gif", "grim.gif", "smile.gif"];

		setInterval(function randomImages () {
		  var randomImage = img_array[Math.floor(Math.random()*img_array.length)];
		  var imgNode = document.querySelector("#showRandom");	
		  
		 imgNode.classList.remove('random');
		 imgNode.classList.add('transitioning-src');
		 
		 setTimeout(() => {
				imgNode.src = randomImage;
                imgNode.classList.remove('transitioning-src');
				imgNode.classList.add('random');
            }, 400);
		 document.querySelector(".imgsrc").value = randomImage;
		}, 3000); 
.transitioning-src {
				transition: opacity .4s ease-out;
				-webkit-transition: opacity .4s ease-out;
				-moz-transition: opacity .4s ease-out;
				-ms-transition: opacity .4s ease-out;
				-o-transition: opacity .4s ease-out;
				opacity: 0;
			}
			#showRandom {
				height: 200px;
				width: 300px;
        border: 1px solid black;
			}
			.random{
				transition: opacity .4s ease-in;
				-webkit-transition: opacity .4s ease-in;
				-moz-transition: opacity .4s ease-in;
				-ms-transition: opacity .4s ease-in;
				-o-transition: opacity .4s ease-in;
				opacity: 1;
			}
<input type="text" class="imgsrc"/><br />
	<img src="avatar.png" id="showRandom" class="random" alt="" />

5
задан Nick Bolton 6 April 2009 в 15:11
поделиться

4 ответа

В функции init используйте эти две строки:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

И в Вашей функции рендеринга, гарантируйте это glColor4f используется вместо glColor3f, и набор 4-й аргумент уровню непрозрачности требуется.

glColor4f(1.0, 1.0, 1.0, 0.5);

glBegin(GL_QUADS);
glVertex3f(-1.0, +1.0, 0.0); // top left
glVertex3f(-1.0, -1.0, 0.0); // bottom left
glVertex3f(+1.0, -1.0, 0.0); // bottom right
glVertex3f(+1.0, +1.0, 0.0); // top right
glEnd();
10
ответ дан 18 December 2019 в 10:49
поделиться

Использовать glColor4 вместо glColor3. Например:

glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glColor4f(1.0f,1.0f,1.0f,0.5f);
2
ответ дан 18 December 2019 в 10:49
поделиться

glColor4f (пускают в ход r, пускают в ход g, пускают в ход b, альфу плавающую);
(в Вашем случае, возможно, clColor4b)
также удостоверьтесь, то смешивание включено.
(необходимо сбросить цвет к неальфе afterwads, который мог бы включить glGet* для сохранения старого vertexcolor),

2
ответ дан 18 December 2019 в 10:49
поделиться

Можно выбрать цвета на вершину

glBegin(GL_QUADS);
glColor4f(1.0, 0.0, 0.0, 0.5); // red, 50% alpha
glVertex3f(-1.0, +1.0, 0.0); // top left
// Make sure to set the color back since the color state persists
glVertex3f(-1.0, -1.0, 0.0); // bottom left
glVertex3f(+1.0, -1.0, 0.0); // bottom right
glVertex3f(+1.0, +1.0, 0.0); // top right
glEnd();
2
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: