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
3
A
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.
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
Le scintillement sonne comme une sorte de problème de synchronisation. https://www.khronos.org/opengl/wiki/Synchronization – samgak