Hola muy buenas
He posteado también en el foro oficial.
Tengo un problemilla y es que empecé hacer los tutoriales en vb.net de hecho estoy en el primero, lo tengo todo hecho pero cuando llega al comando backbuffer.Render() me sale nullreferenceexception he mirado los tutos de c# i me van correctamente incluso los he puesto en una estructura de archivos similar i continua fallando os pongo el codigo.
He ido haciendo pruebas sobre los archivos de textuar, por ejemplo cambiar nombre para ver si me decia filenotfoundexception i esto es correcto, creo que por la estructura de directorios no serà.
El caso es que hice un primer tutorial de solo mostrar la ventana, totalmente vacia i este si que va creo que el error es en el objeto cubo o malla.
saludos
He posteado también en el foro oficial.
Tengo un problemilla y es que empecé hacer los tutoriales en vb.net de hecho estoy en el primero, lo tengo todo hecho pero cuando llega al comando backbuffer.Render() me sale nullreferenceexception he mirado los tutos de c# i me van correctamente incluso los he puesto en una estructura de archivos similar i continua fallando os pongo el codigo.
He ido haciendo pruebas sobre los archivos de textuar, por ejemplo cambiar nombre para ver si me decia filenotfoundexception i esto es correcto, creo que por la estructura de directorios no serà.
El caso es que hice un primer tutorial de solo mostrar la ventana, totalmente vacia i este si que va creo que el error es en el objeto cubo o malla.
Código [Seleccionar]
Imports System.Windows.Forms
'referncias directx
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
'Referencias Jad engine
Imports JadEngine
Imports JadEngine.Scene
Imports JadEngine.Video
Imports JadEngine.Core
Imports JadEngine.Input
'Nota:*******************************************************************************************************
'Cuando sobreescribimos los metodos tenemos que comentar lo que devuelven los
'metodos padre ejemplo de la funcion IniGame tiene return MyBase.IniGame(form); Tenemos
'que devolver el valor que nosotros queramos si no si lo dejamos sin comentar devolveria
'el valor de la funcion padre i daria un error.
'Esto es para todas las funciones que sobreescribimos
'en este caso.
'************************************************************************************************************
Public Class Tuto01
Inherits JApplication
'indicamos si la ayuda debe estar visible o no
Dim showHelp As Boolean = True
'El engine llama ha este metodo despues de haber creado el dispositivo
Public Overrides Function InitGame(ByVal form As System.Windows.Forms.Form) As Boolean
'Return MyBase.InitGame(form)
' Crea los objetos de texturas i fuentes
Jad.AfterCreateDevice()
'Carga las texturas por defecto, fuentes, sombras...
Jad.LoadCreateInHouse()
'*****************************Aquí iria el codigo para cargar i empezar la aplicación****************
'Nota importante en jad la distancia se mide en metros.
' Creamos JMesh: este objecto contiene toda la informacion acerca de vertices e indices
'en este ejemplo creamos un cubo de 3 metros de altura,anchura y profundidad.
Dim mallaCubo As JMesh
mallaCubo = JMesh.CreateCube(3, 3, 3) 'New JMesh()
'Ahora utilizamos el objeto JMeshObject que contiene la informacion de las mallas y sus materiales para renderizar
'No hace falta crear la malla porque ja lo hemos hecho
Dim cubo As JMeshObject
cubo = Jad.Scene.MeshObjects.Create("cubo01", false)
'asodiamos la malla antes creada con el objeto malla
cubo.Mesh = mallaCubo
' Creamos un array de materiales de un solo elemento.
' Es necesario un array porque las mallas pueden necesitar mas de un material o submaterial o subconfiguraciones:
' informacion para mas de 1 material.
Dim material(1) As JMaterial
material(0) = New JMaterial("tocho")
'un material puede estar compuesto por varias capas, de modo que pueda contener diferentes efectos.
'en este ejemplo nosotros usaremos solamente una capa
'crear capa
Dim capa As JMaterialLayer
capa = New JMaterialLayer
'añadimos la capa al material creado
material(0).AddLayer(capa)
'Configuramos la textura difusa. El engine detecta si la textura no existe y la carga.
'Si existe, solo la referencia.
'No debemos indicarle la extension del archivo. El engine la buscara las diferentes extensions hasta encontrar la textura.
'Para buscar texturas el engines entrará en el directorio base/textures, y se movera recursibamente hasta encontrar
'la textura. Gracias a esto, puedes crear subcarpetas para ordenar las texturas sin necesidad de cambiar el engine.
capa.DiffuseMap.Texture = Jad.Video.Textures.Create2D("brick_d", True)
'ajustamos el material al objetoMalla
cubo.Material = material
'Creamos una omni luz
Dim luz As JOmniLight
luz = CType(Jad.Scene.Lights.Create("lucecita", JLightType.Omni), JOmniLight)
'ajustamos la posicion de la luz
luz.Transform.Position = New Vector3(0, 0, -2.0F)
'ajustamos intensidad de la luz
luz.Multiplier = 1.0F
'ajustamos tipo de atenuación de la luz
luz.Attenuation.Type = JLightAttenuationType.DualRadius
'ajustamos comienzo de la atenuacion
luz.Attenuation.Start = 1.0F
'ajustamos la distancia donde la luz esta completamenta atenuada
luz.Attenuation.End = 2.0F
'ajustamos color de la luz
luz.Color = JColor.Yellow
'hacemos que la luz afecte al componente difuso del material
luz.AffectDiffuse = True
'hacemos que la luz afecte al componente especular del material
luz.AffectSpecular = True
'quitamos sombras
luz.CastShadows = False
'Ponemos la luz ambiente
Jad.Scene.Lights.Ambient = New JColor(0.4F, 0.4F, 0.4F)
'****************************************************************************************************
' Cuando esta todo configurado encendemos el engine
Jad.Begin()
'Creamos una clase de entrada que controla el teclado i el raton
Jad.CreateInput()
Return True
End Function
'Este metodo se ejecuta cada frame y mira si se ha producido una
'entrada(En este caso de teclado o raton)i ejecuta la accion en el juego
Public Overrides Function Update() As Boolean
'Return MyBase.Update()
'Si la salida no fue creada devolvemos ok
If Jad.InputDevices Is Nothing Then
Return True
End If
' Salir de la aplicación? Si han apretado la tecla ESC
If Jad.Input.Keyboard(Key.Escape).Down Then
Return False
End If
'ayuda
If (Jad.Input.Keyboard(Key.F1).Pressed) Then
showHelp = False
End If
' Si todo esta correcto no salimos
Return True
End Function
Public Overrides Sub Render()
'MyBase.Render()
'Las vistas estan renderizadas'windows'.El engine crea implicitamente
'la vista,le 'subbuffer', por defecto.
Dim backbuffer As JView = Jad.Video.Views(0)
'Renderizamos la Jad.Scene usando la camara de escena
backbuffer.Render()
If showHelp Then
'Obtenemos el acceso a la primera fuente. El engine crea una fuente por defecto
Dim font As JFont = Jad.Video.Fonts(0)
' comienzo de la renderizacion de las fuentes
Jad.Video.Fonts.Begin()
''Escribimos el texto en la primera linea, posicion x=0 i de color amarillo
font.RenderLine(Jad.Version + " Apreta ESC para salir", 0, JColor.Yellow)
'Escribimos texto en la secunda linea, posicion x=0 de color blanco
font.RenderLine(Jad.Video.Views.CurrentView.Stats.Fps + " FPS", 0, JColor.White)
'Final de la renderizacion de las fuentes
Jad.Video.Fonts.End()
End If
'Mostramos lo que contiene el subbuffer.
backbuffer.Present()
End Sub
End Class
saludos