LIBGDX - ¿Cómo deshacerse del efecto de bandas en el fondo degradado? -- libgdx campo con gradient camp Relacionados El problema

LIBGDX - How to get rid of banding effect on gradient background?


1
vote

problema

Español

Tengo problemas de bandas con texturas relacionadas con degradados en mi juego y parece que no puedo encontrar cuál es la causa y cómo resolverlo.

Aquí es de lo que estoy hablando: a la izquierda hay un gradiente en mi juego, mientras que, a la derecha, es un gradiente generado en una aplicación de generador de degradados (tinte). Podemos ver claramente los problemas de bandas.

Para crear mi degradado, utilicé este código para generar una textura utilizada para crear una imagen que escaleo para llenar la pantalla del usuario.

  Pixmap pix = new Pixmap(2, 2, Pixmap.Format.RGBA8888); pix.setColor(colorSchemes[backgroundColorScheme.ordinal()].getTopColor()); pix.fillRectangle(0,0,2,1); pix.setColor(colorSchemes[backgroundColorScheme.ordinal()].getBottomColor()); pix.fillRectangle(0,1,2,1);  Texture texture = new Texture(pix); texture.setFilter(Texture.TextureFilter.Linear,  Texture.TextureFilter.Linear); pix.dispose();   

También tengo otro problema con las bandas cuando intento agregar Niebla como Actores encima del fondo para animarlo un poco. Los escalé, cambié su opacidad y los muevo y vuelva a ver los problemas de bandas como se destaca en la imagen de abajo.

Estoy tratando de replicar un efecto de fondo como en este juego https://www.youtube.com/watch?v=_vbczzj3nau

Tengo este código en mi bucle de renderización de la pantalla:

  @Override public void render (float delta) {     Gdx.gl.glClearColor(0,0,0, 1);     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);     Gdx.gl.glEnable(GL20.GL_BLEND);     Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); }   

¿Alguna idea sobre cómo puedo resolver esos problemas? Cualquier ayuda sería muy apreciada.

Original en ingles

I am having banding issues with gradient related textures in my game and I can't seem to find what's the cause and how to solve it.

Here's what I am talking about: On the left is a gradient in my game, whereas on the right is a gradient generated in a gradient generator application(Tint). We can clearly see banding issues.

To create my gradient, I used this code to generate a Texture used to create an Image that I scale to fill the user's screen.

Pixmap pix = new Pixmap(2, 2, Pixmap.Format.RGBA8888); pix.setColor(colorSchemes[backgroundColorScheme.ordinal()].getTopColor()); pix.fillRectangle(0,0,2,1); pix.setColor(colorSchemes[backgroundColorScheme.ordinal()].getBottomColor()); pix.fillRectangle(0,1,2,1);  Texture texture = new Texture(pix); texture.setFilter(Texture.TextureFilter.Linear,  Texture.TextureFilter.Linear); pix.dispose(); 

I also have another issue with banding when I try to add fog-like actors on top of the background to animate it a bit. I scale them, change their opacity and move them around and again I get banding issues as highlighted in the picture below.

I am trying to replicate a background effect like in this game https://www.youtube.com/watch?v=_vBczzj3NAU

I have this code in my render screen render loop:

@Override public void render (float delta) {     Gdx.gl.glClearColor(0,0,0, 1);     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);     Gdx.gl.glEnable(GL20.GL_BLEND);     Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); } 

Any ideas on how I can solve those issues? Any help would be greatly appreciated.

     

Lista de respuestas

0
 
vote

Aumentar el número de bits por canal de color (creo que el valor predeterminado es de 5 bits) a 8 bits arreglado el problema de las bandas para mí.

en androidlauncher.java

  <style>     body {         background-color: white;         font-size: 20px;     } </style> 3  

en Desktoplauncher.Java

  <style>     body {         background-color: white;         font-size: 20px;     } </style> 4  
 

Increasing the number of bits per color channel (I believe the default is 5 bits) to 8 bits fixed the banding problem for me.

In AndroidLauncher.java

AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.r = config.g = config.b = config.a = 8; 

In DesktopLauncher.java

LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.r = config.g = config.b = config.a = 8; 
 
 
   
   

Relacionados problema

-1  ¿Cómo hago una barra de navegación con un fondo degradado?  ( How do i make a nav bar with a gradient background ) 
Estoy tratando de hacer el fondo un gradiente lineal. He intentado nav { background: -webkit-linear-gradient(black, gray, black); /* For Safari 5.1 to 6....

0  iPhone SDK: Cómo dibujar un rectángulo redondeado con un gradiente semitransparente y una sombra de caída  ( Iphone sdk how to draw a rounded rectangle with a semi transparent gradient and ) 
Estoy experimentando con el dibujo en el iPhone creando manualmente partes de la UI para mi solicitud (en este caso, una gráfica). Esencialmente, quiero dibuj...

0  Cambiar el peso de la fuente de la propiedad CSS `CONTENIDO`  ( Change font weight of css content property ) 
Necesito cambiar el peso de la fuente de parte de un selector de contenido CSS3. Solo parte, no todo. Aquí es cómo se configura mi código: HTML: <p id="fir...

0  CSS3 - Divos uno el uno en el otro, fronteras, triángulos  ( Css3 divs one on each other borders triangles ) 
Estoy en problemas tratando de hacer esto: Me las arreglé para hacer algo así: display: table-cell; vertical-align: middle; background: rgb(245,245,2...

13  ¿Cómo puedes crear un gradiente CSS3 en la ópera?  ( How can you create a css3 gradient in opera ) 
Puedo crear gradientes CSS en IE6 / 7/8/9 / FF3.6 + y Chrome (ver más abajo). Mi pregunta es: ¿Cómo se crearía un gradiente en la ópera? .gradient{ ...

7  ¿Cómo puedo hacer un flujo de gradiente en múltiples direcciones?  ( How can i make a gradient flow in multiple directions ) 
Me gustaría crear un efecto de Ambilight usando gradientes. En CSS3 puede dejar que un gradiente se mueva desde from functools import partial def f(a, b): ...

4  Ya tengo un gradiente en mi UIView, teniendo problemas para insertar uno nuevo  ( Already have a gradient on my uiview having trouble inserting a new one ) 
Este es el código que ya tengo: CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = backGradient.frame; gradient.colors = [NSArray arrayW...

2  ¿Cómo puedo aplicar un GRADIENTBRUSH a múltiples objetos consecutivos en XAML?  ( How can i apply a gradientbrush to multiple consecutive objects in xaml ) 
Tengo un bloque de texto y una línea que se sienta uno junto al otro en su propio Packpanel exclusivo. Necesito difundir mi LineArgradientBrush a través de ...

0  ¿Cómo eliminar las marcas de degradado en Adobe Flash?  ( How to delete gradient marks on adobe flash ) 
Me pregunto cómo eliminar los marcadores de degradado en Flash. Por ejemplo, cuando estoy trabajando en un gradiente en la ventana de color, y se mueve el mou...

-1  Gradientes en Firefox  ( Gradients in firefox ) 
Estoy tratando de hacer botones brillantes en los navegadores que los gradientes de apoyo, pero nunca consiguieron el aspecto que quería en Firefox. Muestra l...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos