Gracias Gracias:  26
Página 2 de 5 PrimerPrimer 12345 ÚltimoÚltimo
Resultados 16 al 30 de 62

Tema: ayuda con Directx 7

  1. #16
    Ya con teclado ejpañol.. Avatar de Wayfa
    Fecha de ingreso
    Aug 2007
    Ubicación
    Madriz
    Mensajes
    3,937

    Re: Ayuda con Directx 7

    Me suena que el SDK de Directx trae un montón de ejemplos y documentación muy extensa(ingles).. seguro que hay algo de manipulacion de vértices y tal.. pero no se ayudarte. Esto esta mucho más allá de lo que yo llego.
    Si, es Mars.. se me confunden estos muchachos, Juas

  2. #17
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Bueno pues muchas gracias, ando algo perdidillo en todo este tema, de momento me centrare en aprender c++, estoy realizando ejemplos ya con punteros, cadenas, estructuras etc, y es muy apasionante.
    Más adelante veré eso de sdk, pero otra duda (tonta seguro,):

    Las funciones de skd valen para hacer una librería con directx? es que no entiendo bien lo de la tarjeta gráfica, me podrías explicar un poco así a tu modo de ver.

  3. #18
    Ya con teclado ejpañol.. Avatar de Wayfa
    Fecha de ingreso
    Aug 2007
    Ubicación
    Madriz
    Mensajes
    3,937

    Re: Ayuda con Directx 7

    El SDK es el material necesario para desarrollar apps en directx. Muy a grosso modo, es una gigantesca biblioteca de funciones, documentación y modulos.
    La parte gráfica se encarga de tratar, justamente con la tarjeta gráfica, porque Direct3D esta pensado más que nada para videojuegosy apps en tiempo real. Programar una gráfica directamente seria un marrón, así que directx hace gran parte del trabajo sucio.
    Lo puedes bajar gratis de la página de Microsoft.

  4. #19
    Ninja Fever Avatar de Mars Attacks
    Fecha de ingreso
    Jun 2003
    Ubicación
    Castellón
    Mensajes
    12,744

    Re: Ayuda con Directx 7

    Sigo recomendandote que te pases por stratos. Hay muchos hilos dedicados a la programación gráfica, recursos de autoaprendizaje y demás.

  5. #20
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Ya se gracias mars, buscando por google sobre programación a veces topo con ese foro, pero es difícil arrancar en un lenguaje nuevo, luego ya será más fácil. De todas formas, echaré un ojo por ahí, aunque si pudieras pasarme algún enlace para novatos en esto de directx y librerías y así, te lo agradezco.

  6. #21
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Y oye mars, podrías irte a un ordenador con Windows, y probar mi juego (cirujanos zombies), que le puse un modo de "ojo magico" que seguro te gustaba,

  7. #22
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Bueno, por fin he conseguido crear una .dll y que funcione en blitz3D, pero no hace una simple suma, si no que inicia directx, carga una teterita y la renderiza y además la rota.

    Me costó bastante encontrar un ejemplo de algo así, y es justo el archivo que adjunto.
    Ahora ya tengo código donde investigar y además sé que funciona.

    También encontré este link:
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Donde estoy aprendiendo también con tutoriales (aunque sean ingles) y además tiene todas las funciones que se pueden usar con su explicación,

    La verdad que aun no acabé de leerme el manual de c++ pero no podía esperar para ver que realmente podía compilar una .dll y que funcionara, aunque ni idea del código (pero no es muy largo).

    Y también me descargué el visual c++, ya que el dev-c++ no funcionaba no se porque .

    Bueno por si alguien esta pensando en hacer .dll para blitz3d, pues ya tiene por donde empezar con el archivo adjunto y el link.
    Por cierto, con directx 9 sdque va perfectamente, no hace falta usar directx 7.

    Saludos.
    Archivos adjuntados Archivos adjuntados
    Última edición por aprendiz; 21-01-2012 a las 05:46

  8. #23
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Me uno al tema, el cual es algo complicado, como bien sabemos Blitz3D va de la mano con las DirectX 7, esto fuera de ser una pesadilla para los usuarios noveles se desmerita erroneamente pensando que ya no sirve para nada, sin embargo el fundamento de directX 11 son sus anteriores funciones guardadas en sus DirectX , ¿pero por que el cambio?, venga que soy un defensor de Blitz3D, y lo que nos ha jodido mentalmente es ver que las DirectX van adelante con el propósito de aprovechar al máximo el poder de hardware de hoy en día, como tarjetas aceleradoras y todo eso.

    Mira, pienso muy subjetivamente que, que hemos caído en la trampa del consumismo y pensamos que los sitemas de vídeojuegos en la actualidad son solo shaders cosas que ni siquiera comprendo por que solo lo soporta tarjetas nvidía 9500 donde se puede correr GTA V, pero pienso que antes de explorar y ahondar temas más allá de lo que ofrece Blitz3D estaría mejor profundizar en los comandos de Blitz3D y de sacarle el mejor provecho e intentar hacer algo, pues eso de programar en Visual studio con el SDK es algo que nos va a cortar la productividad, y es que no se hasta donde deseas llegar con esto, pero mi consejo y con sinceridad es que profundizs en Blitz3D a grado cabal pues esta realizado para personas de a pie como nosotros y ya lo de DirectX para los eruditos en estudios de universidades y todo eso que al crear programas nos hacen la vida más facil.

    Un saludo y creo que no he dicho nada que sirva de algo.
    Última edición por Yue; 02-02-2012 a las 21:05
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  9. #24
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Hola, pues lo que pretendo hacer con directx es lograr los mismo efectos que hago con los comandos de blitz3d, y otros nuevos efectos como sombras realistas, efecto de desenfoque, y todo efecto que se me pueda ocurrir.

    Lo bueno de hacerlo con la .dll por lo que tengo entendido es que va mucho más rápido el procesado, y ahorras fps, estoy en lo cierto?

  10. #25
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    Lo de rápido depende, de como se implemente pues se esta haciendo un puente entre Blitz3D para uso de las otras versiones de DirectX, si te fijas en Ashadow los efectos Dof, Glow, Bloom, sombras volumetricas se están haciendo en DirectX 7, lo que sucede es que se nos esta pasando una función que nos facilita toda la cosa, por ejemplo Crear Sombra(Ente1), así que todo es mucho más fácil, sobre la arquitectura y viabilidad tenemos que tomar como partida que el propio Blitz3D es lento pues esta en un tercer nivel, por encima de C++, así que en tal caso antes de dar un paso a para las DirectX, lo más viable que pienso yo, es tomar otro motor gráfico por ejemplo Ogre3D... El punto aquí es que de cierta manera Blitz3D nos hace la vida mucho más fácil, pero sus limitantes de forma aparente nos conllevan a pensar que esta como quedado, es el caso de Unity donde se promociona los efectos de luz en un molino y física de telas, cuando eso ya se podía hacer en Blitz3D, debido a que usuarios experimentados ya han creado dll para ese fin o cosas como esas.

    Mira te pasaré un código que es esencial entender, como veras la velocidad de una aplicación es determinado por un conjunto de factores, como son velocidad de procesador, aceleradora 3d, memorias, velocidad de transferencia y etc.

    Pero cuando se realiza una aplicación a veces nos sentimos frustrados por que como que esto va muy lento, y resulta que no hemos realizado nosotros las cosas bien, oka aquí va el código.

    Código:
    While Not KeyHit(1)
    
    	Repeat : elapsed = MilliSecs() - time : Until elapsed
    	ticks = elapsed / period
    	tween# = Float(elapsed Mod period) / Float(period)
    	For k=1 To ticks
    		time = time + period
    		If que = ticks Then CaptureWorld
    		UpdateObjects ; Movimiento de entidades.
    		UpdateWorld
    	Next
    	
    	RenderWorld tween#
    
    	Text 10, 10, FPS()
    	Flip 0
    Wend
    lo anterior implica que en el bucle principal de la aplicación dentro del For... Next se mete los movimientos de los objetos, entidades y sin importar los recursos del sistema la aplicación se acómoda para dar movimientos suaves.... lo que quiero decir es que Blitz3D no es lento pues es tecnología realmente madurada con los años, otra cosa es si intentas hacer algo con DirectX 10 la lentitud te cagara la pc, pues para eso se necesita ciertos recursos de hardware y lo más importante experiencia.

    Algo más para agregar es que entre más poderosa sea la máquina un juego puede ir más rápido, pero en exceso, es decri en tu computadora un cubo puede estar girando muy bien, pero en un procesador de doble núcleo el cubo va mucho más rápido y esto no es viable, y en una máquina más lenta el cubo se mueve más lento, no se que más agregar, pero si deseas aprender DirectX, yo recomendaría pasarte a otro motor que cumpla esas expectativas y que nos facilitan la vida pues traen un montón de funciones como Crear_Sombra y listo todo arreglado.

    Un saludo.

    edit: algo para pensar : A los verdaderos artistas no se los mide por su herramientas, por sus tarros de pintura, sus pinceles o brochas, por el papel donde plasmaron su obra, se miden por el resultado de su trabajo, así que sige con blitz3d y profundiza en el, yo buscaré un moton de ejemplos que tengo en Blitz3D usando libs externas pero no centrandose en ellas y te los pasaré.
    Última edición por Yue; 02-02-2012 a las 22:07
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  11. #26
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Muchas gracias por toda la información Blitz3d.

    El tema del renderizado por fases, con tween, lo conocía y de echo lo uso normalmente en la mayoría de juegos.

    Pero la duda que yo tenía, es que un código echo con el propio lenguaje de blitz3d, ira más lento que el mismo código echo en una .dll, o no?

    yo pienso que ira más lento por lo que tu has dicho, que la dll es lenguaje de bajo nivel.

    Por ejemplo, yo se hacer un efecto de blur con sprites desde blitz3d, pero me quita casi la mitad de fps.
    Pienso que si logro hacerlo desde una dll, ahorraría fps y podría poner más efectos y no estar tan limitado, por eso mismo estoy investigando con c++ y directx.

    Tu que crees sobre eso?

    pd: muchas gracias por el programa shadermap, lo estoy probando ahora y esta muy bien.
    Última edición por aprendiz; 02-02-2012 a las 22:25

  12. #27
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    http://blitzmirror.ueuo.com/ en esta web encontraras libs para Blitz3D.

    Las Libs le dan cierta funcionalidad a blitz que no posee, y al hacer el ingerto ira más lento debido a que las funciones se pasan de bajo nivel a alto nivel, sin embargo debemos tener en cuenta que la velocidad es predeterminad como mencione por un gran número de factores, es diferente manejar un modelo de 50.000 polígonos en Blitz que hacerlo directamente en DirectX, hablo de mi experiencia, pues si metes un cubo para una caja, va lo más de bien, ya si la caja necesita texturas con Dot3D, también ira bien, ahora queremos que tenga sombra, ShadowMap? o sombras volumetricasí, eso depende de como implementemos las cosas, de no renderizar lo que no se visualiza, por ejemplo el nivel anterior que se paso es inecesario tenerlo en la memoria, o el túnel que el protagonista dejo atrás, así que es bueno usar ntityAutoFade o hideentity etc.

    Lo que te dijo no es que sea un erudito en el tema, sin embargo es mi propio punto de vista.

    Un saludo.

    Edit: sobre el FPS, te comento que en el vídeo de el molino, me va a 18 o 15 FPS cuando pongo Bloom y todo eso, pero con la técnica anterior se ve los más de bien, es decri el usuario no se fija en eso, lo que necesita es que le ande bien la cosa en su computadora.
    Última edición por Yue; 02-02-2012 a las 22:31
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  13. #28
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    No se si a esto te refieres con sombras realistas en Blitz3D.


    ayuda con Directx 7-2263.jpg
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  14. #29
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Ayuda con Directx 7

    Me refiero al tipo de sombras que usa la librería Ashadow.

    En una explicación que habías dado, dijiste que había dos tipos de sombra, las ortográficas y las volumetricas.

    Las ortográficas se hacerlas porque son muy fáciles, pero aun sabiendo hacerlas las fps se bajan mucho debido a que hay que renderizar todo a una textura.

    Y las otras creo que es calculando un volumen para la geometría y calculando las interseciones con las mallas que reciben la sombra para dibujar la textura, creo que es así por lo que deduzco, pero quiero aprender a hacer eso con una libreria.

  15. #30
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Re: Ayuda con Directx 7

    vale, ya te paso un ejemplo en blitz de sombras volumetricas.

    Edit: mira lo de la bajada del FPS no interesa mucho si usas la técnica del Tewwn, donde aunque el FPS decienda no afecta la suavidad de los movimientos.

    Como mencione en el ejemplo del molino, el FPS va a 15 18, con todo activado, si no usara ese técnica todo se relentiza.

    ya voy con el ejemplo.

    Sombras cartográficas, no se de donde sacan que orto -.- gráficas.

    Código:
    ;Attempt at explaining directional shadows
    ;-Kevin Laherty								(kalisme@hotmail.com)
    
    ;This is mearly a re-release of a pseudo-tutorial I released ages ago.
    ;I refur to this as a pseudo-tutorial because I'm actually quite
    ;concerned that ;this will seem like total utter jibberish
    ;since I'm horrible at explaining things...
    ;This is based off code that someone posted in a forum
    ;a few years ago (great learning material).
    ;I don't know his name, but if you know who I'm talking about
    ;please inform me, he deserves alot of credit.
    
    ;Anywho, this code casts a directional shadow from a caster entity
    ;onto a receiver entity. It may not be the most stunning style
    ;of casting shadows, but it's quite fast (when coded right)
    ;and seems to blend quite well into a blitz3d game engine.
    ;I hope I help at least one person and someone uses it to
    ;fancy-up a game n_n
    
    ;This was alos the basis of my ShaKAL library I was working on
    ;a long time ago. (If anyone remembers it)
    
    Graphics3D 800,600
    SetBuffer BackBuffer()
    AmbientLight 0,0,0
    
    ;Ssize:
    ;the size of the shadows texture.
    ;(remember To use base 2... eg: 2 4 8 16 32 64 128 256 512)
    ;make sure it's smaller than the games resolution...
    ;eg: you can't render a 512x512 map on a 320x240 screen...
    Global ssize=64
    Global shadow_tex=CreateTexture(ssize,ssize,16+32) ;create the shadow texture
    ;Xscale: 
    ;lets say the default zoom the shadow camera is 1.(it's actually .06, but 1 sounds easyier :P )
    ;so if Xscale = 1, the zoom = 1/Xscale# = 1
    ;but if Xscale is smaller than 1 it will make the camera zoom in more.
    ;It's hard for me to explain... play with it, you'll get it in time.
    Global Xscale#=1*(.8/4)
    
    ;creating and setting up the shadow rendering camera.
    shadowcam=CreateCamera() 
    CameraViewport shadowcam,0,0,ssize,ssize 	;the viewport the shadows will be rendered through.
    CameraClsColor shadowcam,255,255,255 		;Yup, white background for shadow textures.
    CameraProjMode shadowcam,2					;Orthographic view, sorry, I've only figured out very simple directional shadows.
    CameraZoom shadowcam,.06/Xscale# 			;though the function "shadow_test" does this every time it's used, here it is for you to see anyway. It's not needed here.
    CameraFogMode shadowcam,1					;The fog is put on so it seems like everythings white... to make a caster visable to the camera, disable fogging to that object.
    CameraFogRange shadowcam,1,1
    CameraFogColor shadowcam,255,255,255
    
    HideEntity shadowcam ;we don't want it onscreen now.
    
    ;just setting up the scene========
    camera=CreateCamera()					;<-the game camera
    PositionEntity camera,0,5,-15
    scene=CreateSphere()						;<-later used as the receiver.
    ScaleEntity scene,20,1,20
    caster=CreateCone()						;<-the object that shall cast a shadow.
    UpdateNormals caster
    EntityShininess caster, .2
    EntityColor caster,200,0,0
    RotateEntity caster,40,90,60
    PositionEntity caster, 0,2,0
    ScaleEntity caster, 1,2,1.5
    light=CreateLight(2)					;<-the light source
    vis_light = CreateSphere(12,light)	;<-sphere used to make the light source visable.
    EntityColor vis_light,0,200,0
    EntityFX vis_light,1
    PositionEntity light,-20,8,-1
    ;=================================
    
    ;placing the shadow texture onto the receiver...
    ;but If you make a shadow lib For a game,
    ;You'll probably want this in the actual function... not here.
    EntityTexture scene,shadow_tex
    
    ;Main loop============================================
    While quit=0
    	Cls
    	MoveEntity light,0,0,1:TurnEntity light,0,-5,0 ;A rotating light source. Much more intresting.
    	TurnEntity caster,0,0,.5
    	RenderWorld
    	UpdateWorld
    	If KeyHit(1) Then quit=1
    	shadow_test(shadowcam,camera,light,caster,scene) ;<- our function.
    	
    	Text 500,10,"Xscale#: "+ Xscale#
    	Text 500,20,"zoom: "+ .06/Xscale#
    	Text 300,30,"hit ''<-'' & ''->'' to change the Xscale#."
    	Flip
    	
    	If KeyHit(203) Then Xscale#=Xscale#*.8
    	If KeyHit(205) Then Xscale#=Xscale#*1.2
    Wend
    End
    ;=====================================================
    
    ;shadow_test function:
    ;I made this to help explain the how the real magic is done.
    ;used like so:
    ;shadow_test(s_camera,g_camera,s_light,s_caster,s_receiver)
    ;
    ;>s_camera
    ;			The shadow camera used to render the shadows.
    ;
    ;>g_camera
    ;			The in game camera used to render the game.
    ;
    ;>s_light
    ;			The light source.
    ;
    ;>s_caster
    ;			The object that shadows are casted from.
    ;
    ;>s_receiver
    ;			Where the shadows land onto.
    Function shadow_test(s_camera,g_camera,s_light,s_caster,s_receiver)
    	
    	CameraZoom s_camera,.06/Xscale#		;<-setting up the zoom for the shadow rendering camera.
    	
    	cleartexture(shadow_tex)	;<- I added this because alot of graphics cards seem to render fog differant to mine.. Hopefully this fixes the blurring problem.
    	HideEntity g_camera			;The in game camera must be hidden,
    	ShowEntity s_camera			;and the shadow camera must become visable.
    	
    	EntityFX s_caster,1+8		;<- setting up the caster:
    	EntityColor s_caster,0,0,0	;It needs to be blak and unnefexted by fog and lights.
    	
    ;The shadow rendering camera must be placed at
    ;the light source Then pointed at the caster.
    	PositionEntity s_camera,EntityX(s_light,1),EntityY(s_light,1),EntityZ(s_light,1)
    	PointEntity s_camera,s_caster
    	
    ;Here we render the camera and convert it to a texture.
    	RenderWorld()
    	Color 255,255,255: Rect 0,0,ssize,ssize,0 ;<-this rectangle is used to cull anything that tries to poke outside of the textures boundry box.
    	CopyRect 0,0,ssize,ssize,0,0,BackBuffer(),TextureBuffer(shadow_tex)
    	
    ;The surface and verticy loop.
    ;This loops through every surface of the receiver mesh,
    ;Then every surfaces vertecies.
    ;Our main focus should be the
    ;"Tformpoint" And "vertextexcoords" commands.
    ;These commands actually paint the texture onto the
    ;receiver correctly.
    	For s=1 To CountSurfaces(s_receiver) 
    		surf=GetSurface(s_receiver,s) 
    		For v=0 To CountVertices(surf)-1 
    			TFormPoint VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v),s_receiver,s_camera
    			VertexTexCoords surf,v,(TFormedX()/Xscale#)/32+0.5,1-((TFormedY()/Xscale#)/32+.5) 
    		Next 
    	Next 
    	
    	
    ;Here we just switch the attributes of the caster bak to normal.
    ;In an actual game engine you might have to make this more complex.
    ;I suggest keeping the old attributes in tempory memory then
    ;calling them bak at about this point.
    	EntityFX s_caster,0
    	EntityColor s_caster,200,0,0
    	
    ;here we hide the shadow camera and bring bak the game camera,
    ;ready to go bak to the main game loop like nothing ever happend.
    	ShowEntity g_camera
    	HideEntity s_camera
    	
    End Function
    
    ;This last little function holds no real importance, it just clears a texture and makes it white.
    ;I added this because when I first released this code I found alot of graphics cards don't make
    ;the fog as thik as mine (I'm guessing it's because my card it cheap), and the shadow texture
    ;Grabbed the old shadow texture off the ground and blurred with the new one...
    ;very annoying and unpretty.... Oh well... Hope this works much better.
    Function cleartexture(tex)
    	SetBuffer TextureBuffer( tex ) 
    	Color 255,255,255
    	Rect 0,0,TextureWidth(tex)+1,TextureHeight(tex)+1
    	SetBuffer BackBuffer()
    End Function
    Actualización de sombras cartográficas.

    Código:
    Type Shadow 
    	Field Obj 
    	Field ShwTexSize
    	Field ShwTex
    	Field ShwInit
    	
    End Type 
    
    Graphics3D 1024,768,32,2
    SetBuffer BackBuffer()
    AmbientLight 0,0,0
    
    Global Xscale#=1*(.8/2)
    
    shadowcam=CreateCamera() 
    CameraProjMode shadowcam,2		
    CameraFogMode shadowcam,1			
    CameraFogRange shadowcam,1,1
    CameraFogColor shadowcam,255,255,255
    HideEntity shadowcam 
    
    Local camera=CreateCamera()					;<-the game camera
    PositionEntity camera,0,5,-15
    
    ;scene=CreateSphere()						;<-later used as the receiver.
    Local scene=CreateCube()				;<-later used as the receiver.
    ScaleEntity scene,20,1,20
    PositionEntity scene,0,-1,0
    Local IDScene.Shadow = SW_AddObject(scene)
    
    Local caster=CreateCone(32)				;<-the object that shall cast a shadow.
    PositionEntity caster, 0,3,0
    RotateEntity caster,40,90,60
    ScaleEntity caster, 1,2,1.5
    UpdateNormals caster
    EntityColor caster,200,0,0
    Local IDCaster.Shadow = SW_AddObject(caster)
    
    Local caster1=CreateSphere(32)		;<-the object that shall cast a shadow.
    PositionEntity caster1,0,1,0
    EntityColor caster1,0,0,200
    UpdateNormals caster1
    Local IDCaster1.Shadow = SW_AddObject(caster1)
    
    Local light=CreateLight(2)					;<-the light source
    Local vis_light = CreateSphere(12,light)	;<-sphere used to make the light source visable.
    EntityColor vis_light,0,200,0
    EntityFX vis_light,1
    PositionEntity light,-20,8,-1
    ;=================================
    While quit=0
    	;===>
    	If KeyHit(1) Then quit=1
    	If KeyHit(203) Then Xscale#=Xscale#*.9
    	If KeyHit(205) Then Xscale#=Xscale#*1.1
    	
    	;===>
    	SW_ResetShadow();
    	;===>
    	MoveEntity light,0,0,0.25:TurnEntity light,0,-1.25,0 ;A rotating light source. Much more intresting.
    	TurnEntity caster,0,0,.5
    	UpdateWorld
    	
    	shadow_test1(shadowcam,camera,light,IDCaster,IDScene) ;<- our function.
    	shadow_test1(shadowcam,camera,light,IDCaster1,IDScene) ;<- our function.
    	shadow_test1(shadowcam,camera,light,IDCaster,IDCaster1) ;<- our function.
    	
    	RenderWorld()
    	;===>
    	Text 500,10,"Xscale#: "+ Xscale#
    	Text 500,20,"zoom: "+ .06/Xscale#
    	Text 300,30,"hit ''<-'' & ''->'' to change the Xscale#."
    	Flip
    	;===>
    Wend
    End
    ;=====================================================
    
    Function shadow_test1( s_camera, g_camera, s_light, caster.Shadow, s_receiver.Shadow)
    	;===>
    	;Stop
    	;===>
    	HideEntity g_camera								;The in game camera must be hidden,
    	ShowEntity s_camera								;and the shadow camera must become visable.
    	;===>
    	If s_receiver\ShwInit=True Then
    		CameraClsMode s_camera, False, True
    	Else
    		CameraClsMode s_camera, True, True	
    		s_receiver\ShwInit = True
    	EndIf
    	;===>
    	Local TSize = s_receiver\ShwTexSize
    	;===>
    	CameraClsColor s_camera,255,255,255
    	CameraZoom s_camera,.06/Xscale#		;<-setting up the zoom for the shadow rendering camera.
    	CameraViewport s_camera,0,0,TSize,TSize 	;the viewport the shadows will be rendered through.
    	CameraProjMode s_camera,2					;Orthographic view, sorry, I've only figured out very simple directional shadows.
    	;===>
    	SW_HideObject()
    	;===>
    	Local s_caster=CopyEntity( caster\Obj )
    	EntityFX s_caster,1+8				;<- setting up the caster:
    	EntityColor s_caster,0,0,0	;It needs to be blak and unnefexted by fog and lights.
    	ShowEntity s_caster
    	;===>
    	PositionEntity s_camera,EntityX(s_light,True),EntityY(s_light,True),EntityZ(s_light,True)
    	PointEntity s_camera,s_receiver\Obj
    	RenderWorld()
    	;===>
    	CopyRect 0,0,TSize,TSize,0,0,BackBuffer(),TextureBuffer(s_receiver\ShwTex)
    	;===>
    	Local CurObj = s_receiver\Obj
    	For s=1 To CountSurfaces(CurObj) 
    		Local surf=GetSurface(CurObj,s) 
    		For v=0 To CountVertices(surf)-1 
    			TFormPoint VertexX(surf,v), VertexY(surf,v), VertexZ(surf,v), CurObj, s_camera
    			VertexTexCoords surf,v,(TFormedX()/Xscale#)/32+0.5,1-((TFormedY()/Xscale#)/32+.5) 
    		Next 
    	Next 
    	;===>
    	SW_ShowObject()
    	;===>
    	ShowEntity g_camera
    	HideEntity s_camera
    	FreeEntity s_caster
    	;===>
    	
    End Function
    
    Function SW_AddObject.Shadow( Obj)
    	Local SW_Size = 512
    	Local CurModel.Shadow = New Shadow
    	CurModel\Obj = Obj
    	CurModel\ShwInit = False
    	CurModel\ShwTex = CreateTexture( SW_Size, SW_Size, 16+32)
    	CurModel\ShwTexSize = SW_Size
    	
    	EntityTexture CurModel\Obj,CurModel\ShwTex
    	;===>
    	SetBuffer(TextureBuffer(CurModel\ShwTex))
    	ClsColor 255,64,255
    	Cls
    	SetBuffer(BackBuffer())
    	;===>
    	Return CurModel
    End Function
    
    Function SW_ResetShadow()
    	Local CurModel.Shadow
    	For CurModel=Each Shadow
    		CurModel\ShwInit = False
    	Next
    End Function
    
    Function SW_HideObject()
    	Local CurModel.Shadow
    	For CurModel=Each Shadow
    		HideEntity CurModel\Obj
    	Next
    End Function
    
    Function SW_ShowObject()
    	Local CurModel.Shadow
    	For CurModel=Each Shadow
    		ShowEntity CurModel\Obj
    	Next
    End Function
    ahora las volumetricas.... un tantico.

    Una nota, si se trata de rendimiento las volumetricas consumen mayores recursos, pero si tienes una máquina de doble núcleo y tarjeta aceleradora 3d de última generación no problem, pero como la idea es que corra en todas las máquinas posibles lo mejor es usar mapas de sombras dínamicos o estaticos.
    Última edición por Yue; 04-02-2012 a las 20:58
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

Página 2 de 5 PrimerPrimer 12345 ÚltimoÚltimo

Temas similares

  1. duda de Directx
    Por MAYAMAN en el foro Videojuegos
    Respuestas: 10
    Último mensaje: 22-05-2010, 18:55
  2. open gl y directx
    Por MAYAMAN en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 28-04-2010, 17:09
  3. problemas con MaX, vue y el directx 10
    Por MRV en el foro Discusiones generales
    Respuestas: 0
    Último mensaje: 19-11-2008, 22:17
  4. Directx 9 0c mas max 2008=kk
    Por vertice3d en el foro Problemas con Programas
    Respuestas: 0
    Último mensaje: 25-06-2008, 13:35
  5. DirectX
    Por nelsonadri en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 02-02-2008, 00:32

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •