Tema: OpenGL
Ver Mensaje Individual
  #9  
Antiguo 09-04-2013
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Reputación: 18
cesarsoftware Va por buen camino
Cita:
Empezado por mirkogonzales Ver Mensaje
Muchas gracias por sus respuestas... No es exactamente lo buscado pero me ha sido de mucha utilidad... Me interesaria reiterar la pregunta a nivel conceptual... Imaginen que soy un objeto que se encuentra en el centro de la pantalla y a su alrededor un plano pseudoinfinito que llega hasta el horizonte... como hago para saber en los extremos de la pantalla a que punto de este plano pertenecen? De esta forma podria hacer un bucle que dibuje hasta ahi.... gracias.

Pero si te lo dado escrito
En OpenGL necesitas un cubo que es el area tridimensional de dibujo. Pero tu pantalla es 2D, ose un formulario.
Las funciones Glinicia y Glacaba, son para crear y quitar el contexto OpenGL.
La funcion AjustaVentana crea ese cubo de trabajo en un formulario de las dimensiones que tu quieras.

Y para dibujar el plano que quieres tendrias que usar las siguientes funciones (donde x,y,z es la posicion del plano dentro del cubo tridimensional)
Código Delphi [-]
procedure TfrmOpenGl.DibujaPlanoX(x: Double);
begin
  glNewList(8, GL_COMPILE_AND_EXECUTE);
  // plano X
  glColor3f(0.7, 0.5, 0.0); // naranja
  glPolygonMode(GL_FRONT_AND_BACK, shapeX);
  glBegin(GL_QUADS);
    glVertex3f(x, -extY, -extZ);
    glVertex3f(x, -extY, extZ);
    glVertex3f(x, extY, extZ);
    glVertex3f(x, extY, -extZ);
  glEnd();
  glEndList();
  glCallList(8);
end;

procedure TfrmOpenGl.DibujaPlanoY(y: Double);
begin
  glNewList(9, GL_COMPILE_AND_EXECUTE);
  // plano Y
  glColor3f(0.8, 0.5, 0.0); // naranja
  glPolygonMode(GL_FRONT_AND_BACK, shapeY);
  glBegin(GL_QUADS);
    glVertex3f(-extX, y, -extZ);
    glVertex3f(-extX, y, extZ);
    glVertex3f(extX, y, extZ);
    glVertex3f(extX, y, -extZ);
  glEnd();
  glEndList();
  glCallList(9);
end;

procedure TfrmOpenGl.DibujaPlanoZ(z: Double);
begin
  glNewList(10, GL_COMPILE_AND_EXECUTE);
  // plano Z
  glColor3f(0.9, 0.5, 0.0); // naranja
  glPolygonMode(GL_FRONT_AND_BACK, shapeZ);
  glBegin(GL_QUADS);
    glVertex3f(-extX, extY, z);
    glVertex3f(extX, extY, z);
    glVertex3f(extX, -extY, z);
    glVertex3f(-extX, -extY, z);
  glEnd();
  glEndList();
  glCallList(10);
end;

Mas claro no lo puedo dejar, pero ten en cuenta que como te han dicho antes, tienes que trabajar y aprender sobre la marcha. Con el codigo que he puesto tienes la base para trabajar en opengl con delphi y lo hago porque se lo mucho que me costo a mi comenzar, la proxima consulta que sea con algo de codigo porfa

Saludos.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.
Responder Con Cita