Autor
|
Tema: cómo se hacen las rejas 3D en glut y opengl (Leído 8,929 veces)
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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/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.
|
|
|
En línea
|
|
|
|
integeroverflow
Desconectado
Mensajes: 60
|
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..
|
|
|
En línea
|
|
|
|
ahigor
Desconectado
Mensajes: 54
|
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
|
|
|
En línea
|
|
|
|
ahigor
Desconectado
Mensajes: 54
|
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; }
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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).
|
|
|
En línea
|
|
|
|
ahigor
Desconectado
Mensajes: 54
|
Muchas gracias por los consejos eres un crack
|
|
|
En línea
|
|
|
|
ahigor
Desconectado
Mensajes: 54
|
Y cómo se pinta en OpenGL jajajaja no tengo ni idea de nada
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Y cómo se pinta en OpenGL jajajaja no tengo ni idea de nada 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.
|
|
|
En línea
|
|
|
|
ahigor
Desconectado
Mensajes: 54
|
Me refería a pintar la rejilla completamente de verde o de otro color jeje vamos lo que es pintar por completo la reja
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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. Tienes tambien GL_QUADS, GL_POLYGON, etc. Lo que más te interese.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como instalar la libreria "GL/glut.h"
Programación C/C++
|
mapers
|
3
|
13,125
|
1 Junio 2010, 19:27 pm
por Foxy Rider
|
|
|
glut
Programación C/C++
|
mapers
|
0
|
2,389
|
14 Septiembre 2010, 06:57 am
por mapers
|
|
|
Problema Dev c++ (glut)
« 1 2 »
Programación C/C++
|
alexis33de
|
12
|
10,143
|
8 Diciembre 2010, 23:31 pm
por alexis33de
|
|
|
Entre rejas por insultar al rey Mohamed VI
Noticias
|
wolfbcn
|
0
|
1,498
|
17 Febrero 2012, 01:27 am
por wolfbcn
|
|
|
Problema OpenGL y glut.h (Libreria)
Programación C/C++
|
totolia
|
1
|
5,849
|
13 Mayo 2012, 20:50 pm
por totolia
|
|