Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 5 de 6
Ir a la página Anterior  1, 2, 3, 4, 5, 6  Siguiente
 
OpenGL. Tutoriales
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
Leccion 4: Listas de dibujo
Public mouDownX As Float
Public mouDownY As Float


Public Listas As Integer


Public Sub Form_Open()

 Debug "open"
End

Public Sub Form_Resize()

  
gl.Viewport(0, 0, GLArea1.w, GLArea1.h)  'esto le dice a GL adonde debe dibujar
gl.LoadIdentity    'esto pone todas las transformaciones del dibujo al inicio
gl.Scalef(0.5, 0.5, 0.5)   'esto achica los dibujos, si pones 0.01, tus coordenadas iran de -100 a 100

Debug "resizada"

End

Public Sub Form_Activate()

 Debug "activada"
 
 GenerarListas
 
End





Public Sub GLArea1_Draw()
  
  
  gl.ClearColor(0, 0.5, 0, 1) 'elijo el color con el que voy a borrar la pantalla, en vez de 0-255, aqui los colores van de 0.0-1.0
                              ' el formato es R-G-B-Alpha
  gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) 'ahora borro la pantalla y el buffer de profundidad (los Z)
  
  
  gl.Enable(gl.DEPTH_TEST)  ' queremos que lo que esta atras quede oculto por lo que esta adelante


  
  gl.CallList(listas) 'dibujo lo que genere antes
 
 
 

End

Private Sub GenerarListas()
 
  'Leccion 4: Listas de dibujos
  
  '            en lugar de dibujar todo cada vez que se ejecura Draw, hago que OpenGL guarde una lista de cosas a dibujar
  '            luego solo cambio las rotaciones y llamo a la lista de dibujos
  
  
 listas = gl.GenLists(1)  'genero el ID para 1 listas de dibujos, si ponia nListas en vez de 1 los ID eran lista+1 , lista+2...lista+n

 If Not gl.IsList(listas) Then
  
   Message("No puedo crear las listas")
   Me.Close
  
 Endif
 

 gl.NewList(listas, gl.COMPILE) 'empiezo una lista de tareas
 
  
  gl.Begin(gl.TRIANGLES)  'dibujamos triangulos hasta nuevo aviso
  
   'establecemos el color hasta nuevo aviso
  gl.Color3f(255, 0, 0)
  
  gl.Vertex3f(0, 0, 0) 'el punto 0,0 no esta en arriba a la izquierda, para openGL esta en el medio!!!
  gl.Vertex3f(1, 0, 0) ' 1 no es pixels, las coordenadas van de -1 a 1 , o sea, para eje X, 1 de openGL es GLArea1.width/2
  gl.Vertex3f(0, 1, 0) ' idem para la coordenada Y
  
  gl.Color3f(0, 255, 0) 'verde hasta nuevo aviso, como veran puede estar dentro o fuera de los gl.Begin() - gl.End
  
  gl.Vertex3f(0, 0, 0)
  gl.Vertex3f(-1, 0, 0)
  gl.Vertex3f(0, -1, 0)
  
  
  gl.End  'esto es similar al Paint, todo se encierra entre Begin-End
  
  
  gl.Begin(gl.QUADS)
  
  gl.Color3f(0, 0, 255)
  
  gl.Vertex3f(-0.5, -0.5, 0.5)
  gl.Vertex3f(-0.5, 0.5, 0.5)   ' cambie de 2f (o sea 2 floats) a 3f
  gl.Vertex3f(0.5, 0.5, 0.5)    ' con 2f, la coordenada z (profundidad) era 0, ahora la escribo
  gl.Vertex3f(0.5, -0.5, 0.5)    ' por si no se dieron cuenta 2i equivale a 2 integers, o sea el argumento de la funcion se toma entero
  
  gl.Color3f(0, 128, 128)
  gl.Vertex3f(-0.5, -0.5, -0.5)
  gl.Vertex3f(-0.5, 0.5, -0.5)
  gl.Vertex3f(0.5, 0.5, -0.5)     ' un verde mas claro, en otra profundidad
  gl.Vertex3f(0.5, -0.5, -0.5)
  
  gl.End
  
  gl.EndList
  
  

End


Public Sub GLArea1_MouseMove()
  
  
  If Mouse.Left Then
    anguloY = (Mouse.X - mouDownX) * 0.01
    anguloX = (Mouse.y - mouDownY) * 0.01

    gl.Rotatef(- anguloX, 1, 0, 0) ' rotamos los dibujos 30 grados alrededor de un vector que va del 0,0,0 al 1,0.5,0
    gl.Rotatef(- anguloY, 0, 1, 0) ' rotamos los dibujos 30 grados alrededor de un vector que va del 0,0,0 al 1,0.5,0
    
    GLArea1.Refresh
  
  Endif
  
 End
 
 Public Sub GLArea1_MouseDown()

    mouDownX = Mouse.X
    mouDownY = Mouse.y
  End
  

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
tercoIDE:

Buen trabajo.

El otro día repasando la ayuda de gambas, vi de nuevo la parte de tutoriales.

Tutoriales de Gambas en la ayuda de Gambas

Y vi que hay una parte dedicada a OpenGL. Como ves no hay nada de nada en esta parte.
¿ Qué te parece como "idea" añadir tus ideas en estos tutoriales ?.

Necesitarías ayuda para saber como hacerlo el día que puedas.
Creo que nuestro administrador estará "encantado" de ayudar a que puedas hacerlo.  

De esta forma, toda la comunidad internacional de gambas disfrutara de tus tutoriales.

Otra cosa mas que quería añadir sobre algunos ejemplos que podemos encontrar de OpenGL en la granja.
Los que pertenecen a "Nehe".

Tenemos: ( Por ejemplo de la lección 1 a la 5 )

Nehe tutoriales sobre OpenGL. Del 1 al 5

Si hacéis clck en un tutorial. Por ejemplo, "mi primer polígono". Podemos observar que se puede bajar el
ejemplo en distintos lenguajes. Podríamos contactar con Nehe para que pudiera añadir gambas.    

Que raro. tan poco está C.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
El libro que tengo es de uno de los dueños de NeHe. Asi que dichos tutoriales estan en mi libro. Yo solo adapto a Gambas3, agrego lo que me parece incompleto o quito lo que me parece innecesario aprender.

Citar:
¿ Qué te parece como "idea" añadir tus ideas en estos tutoriales ?


con mi conocimiento demasiado básico de web, prefiero que otro lo haga, basado en este hilo, avanti! todo suyo!
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
tercoIDE escribió:  

con mi conocimiento demasiado básico de web, prefiero que otro lo haga, basado en este hilo, avanti! todo suyo!


Si te parece bien, voy a comenzar a agregarlo al Wiki de gambas a medida que avances. Creo que OpenGL merece un capítulo en la documentación general de gambas en español.

Este es el enlace donde aparecerá: http://wiki.gambas-es.org/doku.php/opengl_con_gambas

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
jguardon escribió:  
voy a comenzar a agregarlo al Wiki de gambas


Optime !
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
Jesús;

Buena presentación!.

Ahora solo falta rellenar más documentación. jejeje.

tercoIDE:

Tu ves como no hacía falta que aprenderías html.  
Debe ser más complicado subirlos a la wiki principal. Siempre se puede hacer una referencia al wiki en español.

En cuanto a Nehe bien poco sé. Me sonaba de cuando se podía ver los ejemplos directamente sin bajar de la granja.
Pensaba que era un usuario y no una empresa. ( Al principio ).


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
Buen trabajo J !!!
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
Shell escribió:  
Siempre se puede hacer una referencia al wiki en español.


Bueno, señalé esta pagina del wiki en el foro italiano gambas-it.org.    


Saludos
 



 
última edición por vuott el Jueves, 07 Enero 2016, 16:42; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
Leecion 5: Iluminacion de la escena

Notese que dos figuras se iluminan hacia atras y las otras dos hacia adelante. Esto se establece con la normal

gl.Normal3f()


' gambas class file

Public anguloX As Float
Public anguloY As Float


Public mouDownX As Float
Public mouDownY As Float


Public Listas As Integer


Public Sub Form_Open()

 Debug "open"
End

Public Sub Form_Resize()

  
gl.Viewport(0, 0, GLArea1.w, GLArea1.h)  'esto le dice a GL adonde debe dibujar
gl.LoadIdentity    'esto pone todas las transformaciones del dibujo al inicio
gl.Scalef(0.5, 0.5, 0.5)   'esto achica los dibujos, si pones 0.01, tus coordenadas iran de -100 a 100

Debug "resizada"

End

Public Sub Form_Activate()

 GenerarListas 'para generar cualquier lista, tiene que estar el contexto de la ventana activo
 
 'Leccion 5: Iluminacion
 
 gl.Lightfv(gl.LIGHT0, gl.AMBIENT_AND_DIFFUSE, [5, 10, 5])
 'ligth0 es el numero de luz, que puede ser 0-9
 ' ambient and diffuse es el tipo de luz que estoy asignando a Ligth0
 ' 5,10,5 son las coordenadas
 ' O sea: colocar una luz ambiente y difusa en (5,10,5) y llamarla Ligth0
 
 
 gl.Enable(gl.LIGHTING) 'prendemos las luces!
 gl.Enable(gl.LIGHT0) 'prendemos la luz 0!
 
 
 
 
End





Public Sub GLArea1_Draw()
  
  
  gl.ClearColor(0, 0.5, 0, 1) 'elijo el color con el que voy a borrar la pantalla, en vez de 0-255, aqui los colores van de 0.0-1.0
                              ' el formato es R-G-B-Alpha
  gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) 'ahora borro la pantalla y el buffer de profundidad (los Z)
  
  
  gl.Enable(gl.DEPTH_TEST)  ' queremos que lo que esta atras quede oculto por lo que esta adelante


  
  gl.CallList(listas) 'dibujo lo que genere antes
 
 
 

End

Private Sub GenerarListas()
 
  'Leccion 4: Listas de dibujos
  
  '            en lugar de dibujar todo cada vez que se ejecura Draw, hago que OpenGL guarde una lista de cosas a dibujar
  '            luego solo cambio las rotaciones y llamo a la lista de dibujos
  
  
 listas = gl.GenLists(1)  'genero el ID para 1 listas de dibujos, si ponia nListas en vez de 1 los ID eran lista+1 , lista+2...lista+n

 If Not gl.IsList(listas) Then
  
   Message("No puedo crear las listas")
   Me.Close
  
 Endif
 

 gl.NewList(listas, gl.COMPILE) 'empiezo una lista de tareas
 
  gl.ShadeModel(gl.FLAT)
  
  gl.Begin(gl.TRIANGLES)  'dibujamos triangulos hasta nuevo aviso
  
   'establecemos el color hasta nuevo aviso
  gl.Materialfv(gl.FRONT_AND_BACK, gl.AMBIENT_AND_DIFFUSE, [1, 0, 0, 0])
  
  ' esto quiere decir que cuando al los elementos siguientes los ilumine una luz ambiente y difusa,
  ' su color sera [red, green, blue, alpha]
  
  gl.Normal3f(0, 0, 1) 'este es el vector normal triengulo siguiente, la luz rebota segun esta normal al plano
  
  gl.Vertex3f(0, 0, 0) 'el punto 0,0 no esta en arriba a la izquierda, para openGL esta en el medio!!!
  gl.Vertex3f(1, 0, 0) ' 1 no es pixels, las coordenadas van de -1 a 1 , o sea, para eje X, 1 de openGL es GLArea1.width/2
  gl.Vertex3f(0, 1, 0) ' idem para la coordenada Y
  
  
  gl.Materialfv(gl.FRONT_AND_BACK, gl.AMBIENT_AND_DIFFUSE, [0, 1, 0, 0])
  
  gl.Normal3f(0, 0, -1) 'este es el vector normal al triangulo siguiente
  
  gl.Vertex3f(0, 0, 0)
  gl.Vertex3f(-1, 0, 0)
  gl.Vertex3f(0, -1, 0)
  
  
  gl.End  'esto es similar al Paint, todo se encierra entre Begin-End
  
  
  gl.Begin(gl.QUADS)
  

  gl.Materialfv(gl.FRONT_AND_BACK, gl.AMBIENT_AND_DIFFUSE, [0, 0, 1, 0])
  
  gl.Normal3f(0, 0, -1) 'este es el vector normal al cuadrado siguiente
  
  gl.Vertex3f(-0.5, -0.5, 0.5)
  gl.Vertex3f(-0.5, 0.5, 0.5)   ' cambie de 2f (o sea 2 floats) a 3f
  gl.Vertex3f(0.5, 0.5, 0.5)    ' con 2f, la coordenada z (profundidad) era 0, ahora la escribo
  gl.Vertex3f(0.5, -0.5, 0.5)    ' por si no se dieron cuenta 2i equivale a 2 integers, o sea el argumento de la funcion se toma entero
  
  gl.Materialfv(gl.FRONT_AND_BACK, gl.AMBIENT_AND_DIFFUSE, [0, 0.5, 0.5, 0])
  gl.Normal3f(0, 0, 1) 'este es el vector normal al cuadrado siguiente
  
  gl.Vertex3f(-0.5, -0.5, -0.5)
  gl.Vertex3f(-0.5, 0.5, -0.5)
  gl.Vertex3f(0.5, 0.5, -0.5)     ' un verde mas claro, en otra profundidad
  gl.Vertex3f(0.5, -0.5, -0.5)
  
  gl.End
  
  gl.EndList
  
  

End


Public Sub GLArea1_MouseMove()
  
  
  If Mouse.Left Then
    anguloY = (Mouse.X - mouDownX) * 0.01
    anguloX = (Mouse.y - mouDownY) * 0.01

    gl.Rotatef(- anguloX, 1, 0, 0) ' rotamos los dibujos 30 grados alrededor de un vector que va del 0,0,0 al 1,0.5,0
    gl.Rotatef(- anguloY, 0, 1, 0) ' rotamos los dibujos 30 grados alrededor de un vector que va del 0,0,0 al 1,0.5,0
    
    GLArea1.Refresh
  
  Endif
  
 End
 
 Public Sub GLArea1_MouseDown()

    mouDownX = Mouse.X
    mouDownY = Mouse.y
  End
  

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: OpenGL. Tutoriales 
 
que no decaiga!

Mas sobre Iluminacion.

Se agrega el modulo que maneja la camara.

OpenGL-Tutorial- Luces.tar.gz
Descripción:  
Descargar
Nombre del archivo: OpenGL-Tutorial- Luces.tar.gz
Tamaño: 75.96 KB
Descargado: 19 veces
OpenGL-Tutorial- Luces.tar.gz
Descripción:  
Descargar
Nombre del archivo: OpenGL-Tutorial- Luces.tar.gz
Tamaño: 75.96 KB
Descargado: 19 veces
OpenGL-Tutorial- Luces.tar.gz
Descripción:  
Descargar
Nombre del archivo: OpenGL-Tutorial- Luces.tar.gz
Tamaño: 75.96 KB
Descargado: 19 veces

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes OpenGL Amaro Pargo General 1 Jueves, 24 Marzo 2011, 13:03 Ver último mensaje
netking86
No hay nuevos mensajes OpenGL Con Gambas jsbsan Videotutoriales 4 Domingo, 24 Noviembre 2013, 12:19 Ver último mensaje
jsbsan
No hay nuevos mensajes Duda Libreria OpenGL francobe General 5 Viernes, 28 Noviembre 2014, 00:29 Ver último mensaje
francobe
No hay nuevos mensajes [OpenGL] Introduction To OpenGL Graphics ... Shell Programación en otros lenguajes 0 Sabado, 09 Marzo 2019, 14:48 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 5 de 6
Ir a la página Anterior  1, 2, 3, 4, 5, 6  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron