Search Home Members Contacts
About Us
Products
Downloads
Community
Support
Pages: [1]
  Print  
Author Topic: Water effect over 2d sprite images  (Read 388 times)
masmas
Community Member
*
Posts: 20


« on: June 04, 2008, 06:03:26 PM »

Hi guys did some happend this before using a water effect with reflection build it with rendersurface object



I had no idea how to fix it, i render it before and after the rendersurface object and didn't work.

any help or tip would be awesome.

thanks
Logged
RuntimeError101
Customers
Community Member
*****
Posts: 180


« Reply #1 on: June 04, 2008, 06:10:06 PM »

Post your render loop, you have to render the 2d stuff last.
Logged
masmas
Community Member
*
Posts: 20


« Reply #2 on: June 04, 2008, 06:36:21 PM »

Thanks RuntimeError101 i did that but still didn't work

//Main Loop
#region {} Ciclo del Juego
        private void CicloJuego()
        {
            while (bHacerCiclo)
            {
                bNoAccion = false;
                //Todos los eventos se tiene que hacer y la aplicacion se tiene que esperar hacerlos
                System.Windows.Forms.Application.DoEvents();

                if (iVida == 0)
                    bMuerto = true;

                if (tvCapturaTeclado.IsKeyPressed(CONST_TV_KEY.TV_KEY_S))
                    tvMotor.Screenshot("xara_"+tvMotor.TickCount().ToString()+"_.jpg", CONST_TV_IMAGEFORMAT.TV_IMAGE_JPG);

                //Validacion de teclas y movimientos de actor principal
                Verificar_Teclado();
                Verificar_Movimiento();

                //Comenzamos a renderizar los objetos
               
                agua_SuperficieRenderizada01.StartRender(false);
                tvAtmosfera.Atmosphere_Render();
                tvTerreno.Render();
                agua_SuperficieRenderizada01.EndRender();
                agua_SuperficieRenderizada02.StartRender(false);
                tvAtmosfera.Atmosphere_Render();
                tvTerreno.Render();
                agua_SuperficieRenderizada02.EndRender();
               
                // Limpiar el ultimo cuadro pintado
               
                tvMotor.Clear(false);
               
                if (fPosicionY < agua_fProfundidad)
                {
                    //Pintar niebla azul para simular estar abajo del agua.
                    tvAtmosfera.Fog_Enable(true);
                    tvAtmosfera.Fog_SetColor(0f, 0.4f, 0.5f);
                    tvAtmosfera.Fog_SetParameters(0f, 0f, 0.01f);
                    tvAtmosfera.Fog_SetType(CONST_TV_FOG.TV_FOG_EXP, CONST_TV_FOGTYPE.TV_FOGTYPE_RANGE);
                    tvAtmosfera.LensFlare_Enable(false);
                }
                else
                {
                    tvAtmosfera.Fog_Enable(true);
                    tvAtmosfera.Fog_SetColor(0f, 0.1f, 0.1f);
                    tvAtmosfera.Fog_SetParameters(0f, 0.1f, 0.003f);
                    tvAtmosfera.Fog_SetType(CONST_TV_FOG.TV_FOG_EXP, CONST_TV_FOGTYPE.TV_FOGTYPE_PIXEL);
                    tvAtmosfera.LensFlare_Enable(false);
                }
                // Renderizamos el cielo de nuevo por que se aņadio efecto de agua
                tvAtmosfera.Atmosphere_Render();

                //Bosque
                for (int i = 0; i < 95; i++)
                    bosque.Render();

                // Pintemos de vuelta el terreno ya renderizado con efectos
                tvTerreno.Render();
                tvaIreri.Render();
                aguila.Render();
                calaca1.Render();
                calaca2.Render();
                arana.Render();
                diablon.Render();
               
                //Acciones
                Acciones();

                //Renderiza la lluvia de forma que se haga infinita
                if (PS.GetGlobalParticleCount() == 10000)
                    PS.ResetEmitter(iEmiter);
                PS.Render();
                PS.SetEmitterPosition(iEmiter, tvGlobales.Vector(tvaIreri.GetPosition().x, 0, tvaIreri.GetPosition().z));
                PS.Update();

                //Renderiza Magia
                PSmag1.Render();
                PSmag1.Update();
                PSmag2.Render();
                PSmag2.Update();
                PSmag3.Render();
                PSmag3.Update();
                PSmag4.Render();
                PSmag4.Update();

                //Puerta
                if (bPuerta)
                {
                    PSpuerta.Render();
                    PSpuerta.Update();
                }

                //Poder del fuego
                if (iPoder == 2)
                {
                    PSfuego.Render();
                    PSfuego.Update();
                }
               //Here is where i draw the 2d images
               //Barra de estatus de la vida
                PintaVida();
               

 //Efecto Fuego
                PintaElementos();

                if (bFuego && bAire && bAgua && bTierra)
                    bPuerta = true;

                //Texto en Pantalla
                tvTexto.Action_BeginText();
                sTex = "Ireri X :" + fPosicionX.ToString() + " Ireri Y :" + fPosicionY.ToString() + " Ireri Z :" + fPosicionZ.ToString();
                tvTexto.TextureFont_DrawText(sTex, 10, 10, tvGlobales.Colorkey(CONST_TV_COLORKEY.TV_COLORKEY_WHITE));
                tvTexto.Action_EndText();

                //Sonidos
                if(oCargar!=null)
                   oCargar.update();
               
                //Pinta todos los objetos
                tvEscena.RenderAllMeshes(true);
                tvMotor.RenderToScreen();
            }
            //Finalizar Ciclo del juego
            Salir_LimpiarMemoria();

       
        }
        #endregion


This is what DrawLife  (PintaVida) do

  #region -> Vida de Ireri y Poderes
        private void PintaVida()
        {
            tvPantalla.Action_Begin2D();
         }
            switch (iVida)
            {
                case 4:
                    tvPantalla.Draw_Sprite(tvGlobales.GetTex("barra01"), 0f, Convert.ToSingle(this.Height - 160)); break;
                case 3:
                    tvPantalla.Draw_Sprite(tvGlobales.GetTex("barra02"), 0f, Convert.ToSingle(this.Height - 160)); break;
                case 2:
                    tvPantalla.Draw_Sprite(tvGlobales.GetTex("barra03"), 0f, Convert.ToSingle(this.Height - 160)); break;
                case 1:
                    tvPantalla.Draw_Sprite(tvGlobales.GetTex("barra04"), 0f, Convert.ToSingle(this.Height - 160)); break;
                case 0:
                    tvPantalla.Draw_Sprite(tvGlobales.GetTex("barra05"), 0f, Convert.ToSingle(this.Height - 160)); break;
            }
            tvPantalla.Action_End2D();
        }
        #endregion

thanks for help
Logged
RuntimeError101
Customers
Community Member
*****
Posts: 180


« Reply #3 on: June 04, 2008, 08:39:35 PM »

The line tvEscena.RenderAllMeshes(true); is after the PintaVida(); thing.
Logged
masmas
Community Member
*
Posts: 20


« Reply #4 on: June 04, 2008, 11:52:19 PM »

thanks a lot RuntimeError101 that works  Grin
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by SMF 1.1.3 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks