[0]
[0]
[0]
[0]
First doubt:
I was waiting for finding some data about the size of the window i create (glViewport (0, 0, 200, 200)) but i dont see anything. Just 0's...
Second doubt:
As you see, Im supposing the VIEWPORT matrix is a 4x1 matrix, is that true?
Any information about how VIEWPORT matrix is made will be wellcome.
About the VIEWPORT matrix, how does it works?
Hi to all,
i have a code with this line to get the value of the VIEWPORT matrix:
glGetIntegerv
but when i print the values i only get this matrix:
#include "stdafx.h"#include "GL/glut.h"#include "GL/glaux.h"#include "GL/glu.h"#include "stdio.h"typedef struct // Utilizamos esta estructura{GLubyte *imageData;GLuint bpp;GLuint width;GLuint height;GLuint texID;} Imagen;/*---------------------Carga_TGACarga un TGA en memoria. El TGA debe cumplir las siguientes características:Ser de 24 bits + Canal ALPHA. (32 bits) y SIN COMPRIMIREl tamaño debe ser cuadrado (x=y) y 32x32 o 64x64 o 128x128 o 256x256Devuleve un puntero a la imagen y el tamaño (variable tam) de la imagen-----------------------*/GLubyte *CargaTGA(char *filename,int *tam){GLubyte TGAheader[12]={0,0,2,0,0,0,0,0,0,0,0,0};GLubyte TGAcompare[12];GLubyte header[6];GLuint bytesPerPixel;GLuint imageSize;GLuint temp,i;GLuint type=GL_RGBA;Imagen texture;GLubyte *aux;FILE *file = fopen(filename, "rb");if (file == NULL)printf("Error1");/* Esto abre y comprueba que es un TGA */fread(TGAcompare,1,sizeof(TGAcompare),file);if (memcmp(TGAheader,TGAcompare,sizeof(TGAheader))!=0)printf("Its a TGA file");/* Leemos la cabecera*/fread(header,1,sizeof(header),file);/* Determinamos el tamaño */texture.width = header[1] * 256 + header[0];texture.height = header[3] * 256 + header[2];/* Vemos las características y comprobamos si son correctas*/if( texture.width <=0 ||texture.height <=0 ||texture.width >256 ||texture.height !=texture.width ||( header[4]!=32)){fclose(file);printf("Error - > Las caracteristicas de la imagen no son las correctas.");}/* Calculamos la memoria que será necesaria */texture.bpp = header[4];bytesPerPixel = texture.bpp/8;imageSize = texture.width*texture.height*bytesPerPixel;/* Reservamos memoria */texture.imageData=(GLubyte *)malloc(imageSize);/* Cargamos y hacemos alguna comprobaciones */if( texture.imageData==NULL ||fread(texture.imageData, 1, imageSize, file)!=imageSize){if(texture.imageData!=NULL)free(texture.imageData);fclose(file);printf("Error6");}/* El TGA viene en formato BGR con, lo pasamos a RGB */for(i=0; i<(GLuint)(imageSize); i+=bytesPerPixel){temp=texture.imageData;texture.imageData = texture.imageData;<br>texture.imageData = temp;<br>}<br>fclose (file);<br><br><br><span class="cpp-comment">/* Ahora, cambiamos el orden de las líneas, como si hiciesemosun flip vertical. */</span><br>aux=(GLubyte *)malloc(imageSize);<br><span class="cpp-keyword">for</span>(i=<span class="cpp-number">0</span>; i<texture.height; i++)<br>memcpy(&aux[imageSize-((i+<span class="cpp-number">1</span>)*texture.width*<span class="cpp-number">4</span>)],&texture.imageData[i*texture.width*<span class="cpp-number">4</span>],texture.width*<span class="cpp-number">4</span>);<br><br><br><span class="cpp-comment">/* tam devolverá el tamaño */</span><br>*tam=texture.width;<br><br><br><span class="cpp-comment">/* Liberamos memoria */</span><br>free(texture.imageData);<br><br><span class="cpp-comment">/* Todo fue bien!*/</span><br><span class="cpp-keyword">return</span> aux;<br><br><br>}<br><br><br><br><span class="cpp-keyword">void</span> RenderScene (<span class="cpp-keyword">void</span>)<br>{<br> <br><br> <br> <span class="cpp-comment">// Borra la ventana con el color de borrado actual</span><br> glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);<br> <br> <br> <span class="cpp-comment">//Establecemos el color del cuadrado que queremos dibujar.</span><br> glColor3f(<span class="cpp-number">1</span>.0f, <span class="cpp-number">0</span>.0f, <span class="cpp-number">0</span>.0f);<br> <br><br> <span class="cpp-comment">/*glBegin (GL_QUADS);<br> <br> glTexCoord2f(0.0f, 1.0f); <br> glVertex3f(-100.0f, -100.0f, 0.0f);<br><br><br> glTexCoord2f(1.0f, 1.0f); <br> glVertex3f( 100.0f, -100.0f, 0.0f);<br><br> glTexCoord2f(1.0f, 0.0f); <br> glVertex3f( 100.0f, 100.0f, 0.0f);<br><br><br> glTexCoord2f(0.0f, 0.0f); <br> glVertex3f(-100.0f, 100.0f, 0.0f);<br><br> <br> <br><br> glEnd();<br><br> */</span><br><br><br><br> <span class="cpp-comment">//glRotatef(45.0f, 4.0f, 2.0f, 6.0f);</span><br><br> <span class="cpp-comment">//Hace que el cubo tenga aspecto de alambre (wire)</span><br> glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);<br><br><br><br><br> glBegin(GL_QUADS); <span class="cpp-comment">// Draw The Cube Using quads</span><br> glColor3f(<span class="cpp-number">0</span>.0f,<span class="cpp-number">1</span>.0f,<span class="cpp-number">0</span>.0f); <span class="cpp-comment">// Color Blue</span><br> glVertex3f( <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Right Of The Quad (Top)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Left Of The Quad (Top)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Left Of The Quad (Top)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Right Of The Quad (Top)</span><br> glColor3f(<span class="cpp-number">1</span>.0f,<span class="cpp-number">0</span>.5f,<span class="cpp-number">0</span>.0f); <span class="cpp-comment">// Color Orange</span><br> glVertex3f( <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Right Of The Quad (Bottom)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Left Of The Quad (Bottom)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Left Of The Quad (Bottom)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Right Of The Quad (Bottom)</span><br> glColor3f(<span class="cpp-number">1</span>.0f,<span class="cpp-number">0</span>.0f,<span class="cpp-number">0</span>.0f); <span class="cpp-comment">// Color Red </span><br> glVertex3f( <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Right Of The Quad (Front)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Left Of The Quad (Front)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Left Of The Quad (Front)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Right Of The Quad (Front)</span><br> glColor3f(<span class="cpp-number">1</span>.0f,<span class="cpp-number">1</span>.0f,<span class="cpp-number">0</span>.0f); <span class="cpp-comment">// Color Yellow</span><br> glVertex3f( <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Right Of The Quad (Back)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Left Of The Quad (Back)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Left Of The Quad (Back)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Right Of The Quad (Back)</span><br> glColor3f(<span class="cpp-number">0</span>.0f,<span class="cpp-number">0</span>.0f,<span class="cpp-number">1</span>.0f); <span class="cpp-comment">// Color Blue</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Right Of The Quad (Left)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Left Of The Quad (Left)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Left Of The Quad (Left)</span><br> glVertex3f(-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Right Of The Quad (Left)</span><br> glColor3f(<span class="cpp-number">1</span>.0f,<span class="cpp-number">0</span>.0f,<span class="cpp-number">1</span>.0f); <span class="cpp-comment">// Color Violet</span><br> glVertex3f( <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Right Of The Quad (Right)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Top Left Of The Quad (Right)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f, <span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Left Of The Quad (Right)</span><br> glVertex3f( <span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f,-<span class="cpp-number">10</span>.0f); <span class="cpp-comment">// Bottom Right Of The Quad (Right)</span><br> glEnd(); <br><br> <span class="cpp-comment">//glRectf(-1.0f, 1.0f, 1.0f, -1.0f);</span><br><br><br><br><br><br> <span class="cpp-comment">// Do the buffer Swap</span><br> glutSwapBuffers();<br><br><br>}<br><br><br><span class="cpp-keyword">void</span> SetupRC(<span class="cpp-keyword">void</span>)<br>{<br><br> GLubyte *pImage;<br> GLint iWidth;<br> <br> <span class="cpp-comment">//Establece el color azul como color para borrar la ventana.</span><br> glClearColor(<span class="cpp-number">0</span>.0f,<span class="cpp-number">0</span>.0f,<span class="cpp-number">1</span>.0f,<span class="cpp-number">1</span>.0f);<br><br> <span class="cpp-comment">// Targa's are 1 byte aligned</span><br> glPixelStorei(GL_UNPACK_ALIGNMENT, <span class="cpp-number">1</span>);<br><br><br> <span class="cpp-comment">// Load the TGA file, get width, height, and component/format information</span><br> pImage = CargaTGA(<span class="cpp-literal">"Sin titulo-1.tga"</span>, &iWidth);<br> <br><br> <span class="cpp-comment">// Use Window coordinates to set raster position</span><br> <span class="cpp-comment">//glRasterPos2i(0, 0);</span><br> <br><br> <span class="cpp-comment">// Escribe un bloque de pixels en el "frame buffer"</span><br> <span class="cpp-comment">//if(pImage != NULL)</span><br> <span class="cpp-comment">// glDrawPixels(iWidth, iWidth, GL_RGBA, GL_UNSIGNED_BYTE, pImage);</span><br> <br><br> <span class="cpp-comment">//Vinculamos la imagen a GL_TEXTURE_2D</span><br> glTexImage2D(GL_TEXTURE_2D,<br> <span class="cpp-number">0</span>, <span class="cpp-comment">// Nivel de detalle de la imagen. Generalmente el 0</span><br> <span class="cpp-number">3</span>, <span class="cpp-comment">// Especifica el numero de componentes de color de la textura sin contar con el alpha?</span><br> iWidth, <span class="cpp-comment">// Anchura de la imagen. SIEMPRE POTENCIA DE 2</span><br> iWidth, <span class="cpp-comment">// Altura</span><br> <span class="cpp-number">0</span>, <span class="cpp-comment">// Numero de pixels que debe tener el borde la textura. Toma 0,1 o 2</span><br> GL_RGBA, <span class="cpp-comment">// Formato de la imagen.</span><br> GL_UNSIGNED_BYTE, <span class="cpp-comment">// el tipo de datos en que va a ser pasada la informacion de la imagen cargada</span><br> pImage <span class="cpp-comment">// Puntero que apunta a la imagen.</span><br> );<br> <br><br><br><br> <span class="cpp-comment">// Don't need the image data anymore</span><br> free(pImage);<br> <br><br><br> <span class="cpp-comment">////TEXTURE FILTERS</span><br> <span class="cpp-comment">////Cuando la imagen de la textura no se adecua con el tamaño de la superficie</span><br> <span class="cpp-comment">////que se quiere cubrir.</span><br> <span class="cpp-comment">////MIN_FILTER: cuando la superficie sea mayor que la imagen.</span><br> <span class="cpp-comment">////MAX_FILTER: cuando la superficie sea menor que la imagen.</span><br> <span class="cpp-comment">////GL_LINEAR: en escaso se ha optado por una interpolacion lineal. Hay 6 mas.</span><br> <br> glTexParameteri(GL_TEXTURE_2D, <br> GL_TEXTURE_MIN_FILTER, <br> GL_LINEAR <br> );<br> <br> glTexParameteri(GL_TEXTURE_2D,<br> GL_TEXTURE_MAG_FILTER,<br> GL_LINEAR<br> );<br><br><br><br> <span class="cpp-comment">////WRAP FILTERS</span><br> <span class="cpp-comment">////Cuando se pega la textura a una superficie debe indicarse la correspondecia</span><br> <span class="cpp-comment">////entre las coordenadas de la textura y los vertices de dicha superficie.</span><br><br> glTexParameteri(GL_TEXTURE_2D, <br> GL_TEXTURE_WRAP_S, <span class="cpp-comment">// Se repite o se estira hacia el lado s? de la textura.</span><br> GL_CLAMP <span class="cpp-comment">//La textura se puede estirar (GL_CLAMP) o se puede repetir (GL_REPEAT).</span><br> ); <br><br><br> glTexParameteri(GL_TEXTURE_2D, <br> GL_TEXTURE_WRAP_T, <span class="cpp-comment">// Se repite o se estira hacia el lado s? de la textura.</span><br> GL_CLAMP <span class="cpp-comment">//La textura se puede estirar (GL_CLAMP) o se puede repetir (GL_REPEAT).</span><br> ); <br><br><br><br><br><br><br> <span class="cpp-comment">////Una textura es un poster que adherimos al poligono, este poster lo podemos combinar con</span><br> <span class="cpp-comment">////el color del poligono. Podemos elegir 4 modos de combinar el color del poligono con el </span><br> <span class="cpp-comment">////color de la textura.</span><br> glTexEnvi(GL_TEXTURE_ENV, <span class="cpp-comment">//Obligatorio siempre.</span><br> GL_TEXTURE_ENV_MODE, <span class="cpp-comment">//Al poner aqui GL_TEXTURE_ENV_MODE, la siguiente linea puede valer GL_DECAL, GL_REPLACE (usan el color de la textura, ignoran el del poligono), GL_MODULATE o GL_BLEND.</span><br> GL_REPLACE <span class="cpp-comment">//</span><br> );<br><br><br> glEnable(GL_TEXTURE_2D);<br><br> <br><br><br>}<br><br><br><span class="cpp-comment">///////////////////////////////////////////////////////////</span><br><span class="cpp-comment">// Called by GLUT library when the window has chanaged size</span><br><span class="cpp-keyword">void</span> ChangeSize(<span class="cpp-keyword">int</span> w, <span class="cpp-keyword">int</span> h)<br> {<br> GLfloat aspectRatio;<br><br> <span class="cpp-comment">// Prevent a divide by zero</span><br> <span class="cpp-keyword">if</span>(h == <span class="cpp-number">0</span>)<br> h = <span class="cpp-number">1</span>;<br> <br> <span class="cpp-comment">// Set Viewport to window dimensions</span><br> glViewport(<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, w, h);<br><br> printf(<span class="cpp-literal">"View\n\n"</span>);<br> <br> GLint viewport[<span class="cpp-number">4</span>];<br> <br><br> glGetIntegerv(GL_VIEWPORT, viewport);<br> <br><br><br> <span class="cpp-keyword">int</span> k;<br> <br> <span class="cpp-keyword">for</span> (k=<span class="cpp-number">0</span>; k<<span class="cpp-number">4</span>; k++)<br> {<br> printf(<span class="cpp-literal">"%f\n"</span>, viewport[k]);<br> }<br><br> printf(<span class="cpp-literal">"\n\n"</span>);<br><br><br> <span class="cpp-comment">// Reestablece el sistema de coordenadas antes de que se ejecute ninguna manipulacion de matr</span><br> glMatrixMode(GL_PROJECTION);<br> glLoadIdentity();<br><br> <span class="cpp-comment">// Establish clipping volume (left, right, bottom, top, near, far)</span><br> <br> aspectRatio = (GLfloat)w / (GLfloat)h;<br> <br> <span class="cpp-keyword">if</span> (w <= h) <br> glOrtho (-<span class="cpp-number">100</span>.<span class="cpp-number">0</span>, <span class="cpp-number">100</span>.<span class="cpp-number">0</span>, -<span class="cpp-number">100</span> / aspectRatio, <span class="cpp-number">100</span>.<span class="cpp-number">0</span> / aspectRatio, <span class="cpp-number">200</span>.<span class="cpp-number">0</span>, -<span class="cpp-number">200</span>.<span class="cpp-number">0</span>);<br> <br> <span class="cpp-keyword">else</span> <br> glOrtho (-<span class="cpp-number">100</span>.<span class="cpp-number">0</span> * aspectRatio, <span class="cpp-number">100</span>.<span class="cpp-number">0</span> * aspectRatio, -<span class="cpp-number">100</span>.<span class="cpp-number">0</span>, <span class="cpp-number">100</span>.<span class="cpp-number">0</span>, <span class="cpp-number">200</span>.<span class="cpp-number">0</span>, -<span class="cpp-number">200</span>.<span class="cpp-number">0</span>);<br><br><br> <span class="cpp-keyword">int</span> j;<br><br> <span class="cpp-keyword">float</span> array2[<span class="cpp-number">16</span>];<br><br> glGetFloatv (GL_PROJECTION_MATRIX, array2);<br><br> <span class="cpp-keyword">for</span> (j=<span class="cpp-number">0</span>; j<<span class="cpp-number">16</span>; j++)<br> {<br> printf(<span class="cpp-literal">"%f\n"</span>, array2[j]);<br> }<br> <br> printf(<span class="cpp-literal">"\n\n"</span>);<br><br> <br> glMatrixMode(GL_MODELVIEW);<br> <br> glLoadIdentity();<br> <br> glTranslatef(<span class="cpp-number">10</span>.0f, <span class="cpp-number">6</span>.0f, <span class="cpp-number">0</span>.0f);<br><br> <span class="cpp-comment">//glRotatef(40.0f, 8.0f, 6.0f, 1.0f);</span><br><br> glScalef(<span class="cpp-number">3</span>.0f, <span class="cpp-number">3</span>.0f, <span class="cpp-number">3</span>.0f);<br><br><br> <span class="cpp-comment">//float array[16]={1, 0, 0, 3, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};</span><br><br> <span class="cpp-keyword">int</span> i;<br><br> <span class="cpp-keyword">float</span> array[<span class="cpp-number">16</span>];<br><br> glGetFloatv (GL_MODELVIEW_MATRIX, array);<br><br> <br><br> <span class="cpp-keyword">int</span> x=<span class="cpp-number">40</span>;<br> <span class="cpp-keyword">int</span> y=<span class="cpp-number">36</span>;<br><br><br> <br> <br> GLdouble modelview[<span class="cpp-number">16</span>];<br> <br> GLdouble projection[<span class="cpp-number">16</span>];<br><br> GLfloat winX, winY, winZ;<br> <br> GLdouble posX, posY, posZ;<br><br><br> glGetDoublev(GL_MODELVIEW_MATRIX, modelview); <br><br><br> <span class="cpp-keyword">for</span> (i=<span class="cpp-number">0</span>; i<<span class="cpp-number">16</span>; i++)<br> {<br> printf(<span class="cpp-literal">"%f\n"</span>, modelview<span style="font-weight:bold;">);<br> glGetDoublev(GL_PROJECTION_MATRIX, projection);<br> }<br><br><br> printf(<span class="cpp-literal">"\n\n"</span>);<br><br><br> <span class="cpp-keyword">for</span> (j=<span class="cpp-number">0</span>; j<<span class="cpp-number">16</span>; j++)<br> {<br> printf(<span class="cpp-literal">"%f\n"</span>, modelview[j]);<br> }<br> <br><br><br><br> printf(<span class="cpp-literal">"\n\n"</span>);<br><br> winX=(<span class="cpp-keyword">float</span>)x;<br> <span class="cpp-comment">//winY=(float)y;</span><br> winY=(<span class="cpp-keyword">float</span>)viewport[<span class="cpp-number">3</span>] - (<span class="cpp-keyword">float</span>)y;<br> <br> <br> glReadPixels(x, <span class="cpp-keyword">int</span>(winY), <span class="cpp-number">1</span>, <span class="cpp-number">1</span>, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);<br><br> <span class="cpp-comment">//gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);</span><br><br> printf(<span class="cpp-literal">"%f"</span>, winZ);<br> <br> <span class="cpp-comment">//printf ("%f %f %f", posX, posY, posZ); </span><br> <br> <br> <br><br><br> <br> <span class="cpp-comment">//glMultMatrixf(array);</span><br><br><br><br><br> }<br><br><br><span class="cpp-keyword">void</span> main (<span class="cpp-keyword">void</span>)<br>{<br><br><br><span class="cpp-comment">/*<br>InitDisplayMode: el modo de presentacion (display) que se usará al crear la ventana.<br>GLUT_SINGLE: usaremos una ventana de un solo buffer, pero en la mayoria del resto de <br>los casos (siempre que se requiera animacion) usaremos el doble buffer.<br>GLUT_RGB: modo de color que usaremos. (RGBA=RGB)<br>*/</span><br> glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);<br> <br> glutInitWindowSize(<span class="cpp-number">200</span>, <span class="cpp-number">200</span>);<br><br> glutInitWindowPosition(<span class="cpp-number">250</span>, <span class="cpp-number">250</span>);<br><br> glutCreateWindow(<span class="cpp-literal">"Simple"</span>);<br> <br> <br><span class="cpp-comment">//OJO: RenderScene aparece arriba como funcion</span><br> glutDisplayFunc(RenderScene);<br><br> glutReshapeFunc(ChangeSize);<br><br><span class="cpp-comment">//OJO: RenderScene esta empalmada con otra funcion (mirar arriba)</span><br><span class="cpp-comment">//Establece el color de borrado de la pantalla pero no la borra. </span><br> SetupRC();<br><br> <br><span class="cpp-comment">//Inicia la estructura principal de GLUT</span><br> glutMainLoop();<br><br> <br><br>}<br><br><br><br></pre></div><!–ENDSCRIPT–><br>
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement