Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Niebla en XNA 4.0

Iniciado por v_sss, 15 de Junio de 2011, 09:58:24 PM

« anterior - próximo »

v_sss

Holas,
Lolz, si que ha pasado tiempo desde mi último mensaje, la virgen del amor hermoso  0:-)

Bueno, estoy intentando aplicar un effecto de niebla a una chusta de código que tengo entre manos y no consigo nada (la edad, que no perdona y mi velocidad de procesamiento ya no es lo que era jajaja)

Estoy usando XNA 4.0

En la clase principal (Game1.cs) tengo algo como esto:
Código (csharp) [Seleccionar]

BasicEffect basicEffect;
basicEffect.FogEnabled = true;
basicEffect.FogStart = 10.0f;
basicEffect.FogEnd = 100.0f;
basicEffect.FogColor = new Vector3(0.0f, 0.0f, 0.0f);

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);

    basicEffect.CurrentTechnique.Passes[0].Apply();
    x.Draw();
}


Ahí se llama a otra clase (x) que tiene un método público (Draw):
Código (csharp) [Seleccionar]

public void Draw()
{
    graphicsDevice.BlendState = BlendState.Opaque;
    graphicsDevice.DepthStencilState = DepthStencilState.Default;
   
    xx.Render();

    spriteBatch.Begin();
    spriteBatch.DrawString(gFont, "blabla", new Vector2(20, 120), Color.Yellow);
    spriteBatch.End();
}


Desde la clase "x" en su método "Draw" se llama a otra clase (xx) que tiene otro método público (Render):

Código (csharp) [Seleccionar]

private Effect instancedEffect;

instancedEffect.CurrentTechnique = instancedEffect.Techniques["HardwareInstancing"];
instancedEffect.Parameters["Texture"].SetValue(cubeTexture);

Public void Render()
{
    foreach (EffectPass pass in instancedEffect.CurrentTechnique.Passes)
    {
        pass.Apply();
        graphicsDevice.DrawInstancedPrimitives(...)
    }
}


Esta última clase es la que en última instancia me "dibuja" los triangulitos en pantalla. Se usa un shader para dibujar las primitivas con su respectiva textura y usando las matrices de proyección... de ahí el foreach ()

El tema está en que la escena se pinta bien, pero de la niebla ni rastro, es como si no hiciese caso del "BassicEffect"

¿Alguna ayuda?

Salu2.

XÑA

Pero tu estás usando el 'instancedEffect' ...¿Qué pinta aquí el BasicEffect?

v_sss

¿Se puede añadir una nueva técnica a"instaceEffect" para que en una pasada me dibuje las primitvas y en otra pasada me aplique el efecto de la niebla?


XÑA


WaaghMan

Suena como que no. Se puede hacer si te curras un shader de instancing y le metes la niebla a mano. Hay documentación al respecto, pero sigue siendo complicado.
Milkstone Studios - Autores de Avatar Ninja!, Little Racers, MotorHEAT y Wool en Xbox Live Indie Games






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.