Dudas sobre openGL gluperspective
Publicado por Alejandro Martinez (1 intervención) el 02/10/2011 12:14:44
veran, estoy empezandoa programar con OpenGL, y me he quedado atrancado en la parte de "objetos 3D" estoy intentando crear un cubo y que se vea en perspectiva
el caso es que me dibuja no un cubo, sino una especie de trangulo que no se ve entero. Y creo que el problema reside en
pero nose porque no me explicaron muy bien.
Tambien querria saber si con OpenGL se pueden crear videojuegos, es decir dicen que es solo una API para los graficos, entonces ¿como se crea el resto del juego?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <GL/glut.h> // glut.h incluye opengl.h y glu.h
#include <GL/gl.h>
#include <stdlib.h>
void dibujar();
float theta =0.0f;
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(640,480);//TAMAÑO
glutInitWindowPosition(10,10);//POSICION VENTANA
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);//RGB. DOUBLE BUFFER y BUFFER DE FONDO
glutCreateWindow("Bad King 1.0");
glutDisplayFunc(dibujar); //Indica a glut que existe la funcion dibujar
glutMainLoop();//Inicia el Main Loop
}
void dibujar() {//DIBUJA TRIANGULO
RECT rect;
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(100, 0.0, 0.0, 200.0);
glMatrixMode(GL_PROJECTION);
// Muevo para atras el objeto. El punto de vista esta
// en la posicion 0,0,0 porque no lo he cambiado, asi que
// alejo el objeto para poder verlo.
glTranslatef(1,0,-2.0);
// Giro el objeto 30 grados en el eje x, luego otros
// 30 en el eje y. Es para que quede bonito.
glRotatef(30,1,0,0);
glRotatef(10,0,1,0);
glBegin(GL_QUADS);
// Cara de arriba
glColor3f(1,0,0); // rojo
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
// Cara de abajo
glColor3f(1,0,0); // rojo
glVertex3f( 1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
// Cara frontal
glColor3f(0,0,1); // azul
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
// Cara trasera
glColor3f(0,0,1); // azul
glVertex3f( 1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
// Cara izquierda
glColor3f(0,1,0); // verde
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
// Cara derecha
glColor3f(0,1,0); // verde
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
glEnd();
glutSwapBuffers();
// Se termina de definir los triángulos.
}
el caso es que me dibuja no un cubo, sino una especie de trangulo que no se ve entero. Y creo que el problema reside en
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(100, 0.0, 0.0, 200.0);
glMatrixMode(GL_PROJECTION);
// Muevo para atras el objeto. El punto de vista esta
// en la posicion 0,0,0 porque no lo he cambiado, asi que
// alejo el objeto para poder verlo.
glTranslatef(1,0,-2.0);
// Giro el objeto 30 grados en el eje x, luego otros
// 30 en el eje y. Es para que quede bonito.
glRotatef(30,1,0,0);
glRotatef(10,0,1,0);
pero nose porque no me explicaron muy bien.
Tambien querria saber si con OpenGL se pueden crear videojuegos, es decir dicen que es solo una API para los graficos, entonces ¿como se crea el resto del juego?
Valora esta pregunta
0