Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ahigor en 17 Marzo 2017, 12:44 pm



Título: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 12:44 pm
Cómo se hacen las rejas 3D en glut y OpenGL?


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 17 Marzo 2017, 13:30 pm
¿Una cuadrícula? Es solo un conjunto de líneas. Si estás utilizando OpenGL antiguo, con glBegin y glVertex, solo sería poner glBegin(GL_LINES);.
Aquí han hablado de ello:
http://www.foro3d.com/f115/hacer-rejilla-en-opengl-en-2d-y-3d-66932.html (http://www.foro3d.com/f115/hacer-rejilla-en-opengl-en-2d-y-3d-66932.html)

http://www.opengl-tutorial.org/es/ (http://www.opengl-tutorial.org/es/)


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 13:40 pm
Muchas gracias es por que tardo mucho en hacer algo línea a línea si había alguna forma de hacerlo un poco más rápido y otra pregunta algún plano x y z de coordenadas con números donde lo encuentro?


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 17 Marzo 2017, 13:50 pm
¿Un plano X y Z de coordenadas? ¿Hacerlo? Pues será escribir los números donde convenga. También lo haces con uno o dos FOR.


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 13:54 pm
Muchas gracias también ahora estoy con la curva de Bézier por qué quiero hacer un humano en 3D y queda mejor hacer líneas curvas tú sabes hacerlo ya?


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 17 Marzo 2017, 14:22 pm
Las líneas curvas son una sucesión de lineas rectas. Parauna curva de Bézier, vasta que avances poco a poco y vayas dibujando las líneas.
(https://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/B%C3%A9zier_2_big.svg/360px-B%C3%A9zier_2_big.svg.png)
Avanzar desde t=0 a t=1 a pasos pequeños (dependiendo de la calidad que busques), y dibujando.


De todos modos, creo que estás yendo demasiado rápido.
- Antes de trabajar con 3D, trabaja con 2D.
- Antes de dibujar curvas, dibuja polígonos.
- En resumen, no hagas cosas "mucho" más avanzadas de lo que puedes hacer ahora, o acabarás bloqueado. Según vayas haciendo cosas, irás viendo cómo hacer las siguientes.


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 14:27 pm
Tienes razón iré poco a poco hasta conseguir mi meta que debería hacer utilizar engines o seguir con OpenGL?


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 17 Marzo 2017, 14:31 pm
Eso, tú verás. Yo te recomendaría OpenGL. Mejor comprender los cimientos antes de ponerse con algo de mucho más alto nivel, como es un engine.


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 14:33 pm
Cierto...... Muchísimas gracias por todo


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 14:38 pm
Si es en 2D me gustaría hacer algo tipo age of empire tú crees que en 2D podré?


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 17 Marzo 2017, 15:43 pm
Puedes hacer lo que quieras, pero ve por partes. No empieces haciendo un juego; un juego requiere más que solo gráficos.

Te diría que hagas un tutorial de OpenGL, como es: http://www.opengl-tutorial.org/es/ (http://www.opengl-tutorial.org/es/)
El OpenGL moderno es más complicado que el antiguo (Ese que utiliza glbegin, glvertex, glEnd, etc... para dibujar). Por esa razón, poco a poco.


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: integeroverflow en 17 Marzo 2017, 16:22 pm
para hacer un juego estilo age of empires podes utilizar la libreria allegro o la libreria SDL. te vas a ahorrar un monton de trabajo, y va a ser mucho mas simple el manejo de graficos, entonces te podes centrar en programar el motor isometrico.

tambien deberas investigar sobre el dibujado de tiles isometricas, que es la forma en la que se dibujan los mapas en AOE, y algoritmos de pathfinding para que los personajes encuentren la ruta a su destino, como pueden ser el A*, depth first, breadth first, etc...

una vez que tengas una base funcional, recien ahi debes meterte a programar la logica del juego, la IA, etc..


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 16:35 pm
Muchas gracias a los dos de verdad me quedo con la biblioteca y los nuevos conceptos y tenéis razón quiero ir muy rápido y todavía no se nada


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 17 Marzo 2017, 18:52 pm
una pregunta como se cargan texturas en opengl quiero pintar hierva en mi proyecto
mi codigo es este:
                        #include<GL/glut.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <iostream>

#include <gl/glaux.h>

#include <GL/glut.h>

float tamanno = 1.0f;
int up, down;
int alto, ancho;

void IniciarGLUT() {
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  glutInitWindowSize(600,600);
  glutInitWindowPosition(100,100);
  glutCreateWindow("Practica III,1 de OpenGL");
}






void PintarEscena() {
   glMatrixMode(GL_MODELVIEW);
   glClear(GL_COLOR_BUFFER_BIT);
   glLoadIdentity();


    glFlush();

glBegin (GL_LINES);
 glVertex2i(-8,6);
 glVertex2i(8,6);

 glVertex2i(-8,5);
 glVertex2i(8,5);

 glVertex2i(-8,4);
 glVertex2i(8,4);

 glVertex2i(-8,3);
 glVertex2i(8,3);

 glVertex2i(-8,2);
 glVertex2i(8,2);

 glVertex2i(-8,1);
 glVertex2i(8,1);


 glVertex2i(-8,0);
 glVertex2i(8,0);

 glVertex2i(-8,-1);
 glVertex2i(8,-1);

 glVertex2i(-8,-2);
 glVertex2i(8,-2);

 glVertex2i(-8,-3);
 glVertex2i(8,-3);

 glVertex2i(-8,-4);
 glVertex2i(8,-4);

 glVertex2i(-8,-5);
 glVertex2i(8,-5);

 glVertex2i(-8,-6);
 glVertex2i(8,-6);

 glVertex2i(-8,6);
 glVertex2i(-8,-6);

 glVertex2i(-7,6);
 glVertex2i(-7,-6);

 glVertex2i(-6,6);
 glVertex2i(-6,-6);

 glVertex2i(-5,6);
 glVertex2i(-5,-6);

 glVertex2i(-4,6);
 glVertex2i(-4,-6);

 glVertex2i(-3,6);
 glVertex2i(-3,-6);

 glVertex2i(-2,6);
 glVertex2i(-2,-6);

 glVertex2i(-1,6);
 glVertex2i(-1,-6);

 glVertex2i(0,6);
 glVertex2i(0,-6);

 glVertex2i(1,6);
 glVertex2i(1,-6);

 glVertex2i(2,6);
 glVertex2i(2,-6);

 glVertex2i(3,6);
 glVertex2i(3,-6);

 glVertex2i(4,6);
 glVertex2i(4,-6);

 glVertex2i(5,6);
 glVertex2i(5,-6);

 glVertex2i(6,6);
 glVertex2i(6,-6);

 glVertex2i(7,6);
 glVertex2i(7,-6);

 glVertex2i(8,6);
 glVertex2i(8,-6);


   glEnd();

   glutSwapBuffers();
}

void ReProyectar(int w, int h) {
   ancho = w;
   alto = h;
   GLfloat formato;

   if(h == 0) h = 1;

    glViewport(0, 0, w, h);

   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();

   formato = (GLfloat)w / (GLfloat)h;
    if (w <= h) glOrtho (-10.0f*tamanno, 10.0f*tamanno, -10.0f*tamanno / formato, 10.0f*tamanno / formato, 1.0f, -1.0f);
    else glOrtho (-10.0f*tamanno * formato, 10.0f*tamanno * formato, -10.0f*tamanno, 10.0f*tamanno, 1.0f, -1.0f);
}

void Zoom(int value) {
   if (up) tamanno = tamanno * 1.01f;
   if (down) tamanno = tamanno / 1.01f;

   ReProyectar(ancho,alto);
    glutTimerFunc(33,Zoom,1);
    glutPostRedisplay();
}

void Flechas(int key, int x, int y) {
   if (key==GLUT_KEY_UP) up = 1;
   if (key==GLUT_KEY_DOWN) down = 1;
}

void FlechasUp(int key, int x, int y) {
   if (key==GLUT_KEY_UP) up = 0;
   if (key==GLUT_KEY_DOWN) down = 0;
}

int main(int argc, char **argv)
{
   glutInit(&argc,argv); //Solo necesario en Linux
  IniciarGLUT();

  glutReshapeFunc(ReProyectar);
  glutDisplayFunc(PintarEscena);
  glutTimerFunc(33,Zoom,1);
  glutSpecialFunc(Flechas);
  glutSpecialUpFunc(FlechasUp);

  glutMainLoop();
    return 0;
}


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 17 Marzo 2017, 23:22 pm
En primer lugar, trata de no poner varios includes iguales.
Luego, trata de poner los glvertex con un for en vez de ponerlos todos seguidos.

Sobre texturas, es un pelín más coñazo. YO te recomendaría dejarlo para un poco más adelante, y acostumrbarte primero a OpenGL (puedes hasta simular hierba con triangulitos de diversas variedades de verde). Realmente no son <necesarias> las texturas al principio, y lían de más, sobre todo si el proyecto no está bien organizado.

Ahora bien, si quieres proseguir con texturas, pues bueno. Yo te diría que busques por Google, que algo encontrarás (Hace mucho que no utilizo OpenGL antiguo para cargar texturas).


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 18 Marzo 2017, 00:26 am
Muchas gracias por los consejos eres un crack


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 18 Marzo 2017, 15:34 pm
Y cómo se pinta en OpenGL jajajaja no tengo ni idea de nada :rolleyes:


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 18 Marzo 2017, 15:41 pm
Y cómo se pinta en OpenGL jajajaja no tengo ni idea de nada :rolleyes:

Pero si ya hiciste el programa de arriba ._.

En cualquier caso, por el foro obtendrás buenas respuestas a buenas preguntas (concretas). Para aprender OpenGL, e mejor que busques un tutorial por internet. Si tienes preguntas concretas, desde luego, sé libre de ponerlas.


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 18 Marzo 2017, 15:48 pm
Me refería a pintar la rejilla completamente de verde o de otro color jeje vamos lo que es pintar por completo la reja


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ivancea96 en 18 Marzo 2017, 15:55 pm
Prueba a utilizar GL_TRIANGLES (Como intuirás, cada 3 vértices, dibujará un triángulo).
Luego, para poner colores, glColor3ub(r, g, b), donde cada parámetro va de 0 a 255. También tienes glColor3f(r, g, b), donde recibe floats, y cada color va de 0.0 a 1.0 (Utiliza lo que más te interese).

Si quieres que la cuadricula tenga un fondo verde, entonces puedes dibujar por detrás 2 triangulos (para formar un cuadrado), y luego la cuadricula (no olvides cambiar el color).

Para todas las modalidades de dibujado que tiene glBegin: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml (https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml).
Tienes tambien GL_QUADS, GL_POLYGON, etc. Lo que más te interese.


Título: Re: cómo se hacen las rejas 3D en glut y opengl
Publicado por: ahigor en 18 Marzo 2017, 15:58 pm
Muchas gracias..........Eres el mejor