2017-01-04 3 views
3

J'ai un système pour rendre différents objets dans différentes textures RGBA en utilisant OpenGL en C++. Je voudrais superposer ces textures, mais mon problème est que chaque texture a le rendu glClearColor. Comment indiquer à OpenGL que les parties ClearColor de la texture sont transparentes (0.0f alpha), afin que je puisse toujours voir les parties des couches derrière les autres couches?OpenGL Render to Transparent Texture

Répondre

2

Le quatrième paramètre de glClearColor vous permet de spécifier une valeur alpha à définir lorsque vous effacez la cible de rendu. Vous pouvez donc simplement passer 0 pour le rendre transparent.

Votre cible de rendu doit évidemment avoir un canal alpha. En outre, l'effacement du canal alpha à l'aide de la valeur spécifiée à l'aide de glClearColor peut être activé ou désactivé à l'aide de glColorMask.

+0

Merci! Je ne peux pas croire que je n'ai même pas pensé à ça! Ca marche un peu, l'arrière-plan des textures est parti! Mais je reçois un film-grain brutal comme scintillement, aucune idée pourquoi cela pourrait être? En utilisant glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Merci encore! – GDN9

+0

Le scintillement sonne comme une sorte de problème de synchronisation. https://www.khronos.org/opengl/wiki/Synchronization – samgak