Por favor necesito ayuda con mis practicas en GL, tengo Ubuntu 6.10 en el cual con una instalacion limpia instale los driver propietarios de Nvidia y Beryl lo comento por que tengo entendido que estos ocupan GL y mesa. Despues instale el juego GNUbik el cual me dijieron traia el mesa, ya que el Mesa-6.5.2 me marca error:
gcc -c -I../../../include -I/usr/X11R6/include -Wall -Wmissing-prototypes -O3 -g -fPIC -m32 -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DPTHREADS -DUSE_XSHM -DHAVE_POSIX_MEMALIGN -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -I/usr/X11R6/include -std=c99 -ffast-math -fexceptions glut_cmap.c
glut_cmap.c:23:66: error: X11/Xmu/StdCmap.h: No existe el fichero ó directorio
glut_cmap.c: In function ‘__glutSetupColormap’:
glut_cmap.c:230: warning: implicit declaration of function ‘XmuLookupStandardColormap’
make[3]: *** [glut_cmap.o] Error 1
Bueno para compilar el clasico ejemplo de la tetara no hay nimgun problema, el problema es cuando lo ejecuto ya que me marca el siguiente error:
# root@peches:/home/peche/Desktop/3d/c# ./tetera
# Fallo de segmentación (core dumped)
les pongo el ejemplo de la tetera que compilo:
// Ejemplo de programacion con OpenGL. Autor David Santo Orcero.
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
GLfloat luzdifusa[] = {1, 1, 1, 1};
GLfloat posicionLuz[] = {500, 100, 0, 1};
void dibuja_tetera(void)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-100.0, 100.0, -100.0, 100.0, -100.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0, GL_DIFFUSE, luzdifusa);
glLightfv(GL_LIGHT0, GL_POSITION, posicionLuz);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glColor3f(1, 0, 0);
glutSolidTeapot(50);
glFlush();
}
int main (char **argv, int *argc)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(20,20);
glutInitWindowSize(500,500);
glutCreateWindow(argv[0]);
glutDisplayFunc(dibuja_tetera);
glutMainLoop();
return 0;
}

Este funciona
He probado el código tuyo y me da el mismo error.
Este ejemplo funciona:
/* Este programa utiliza proyeccion ortografica para * visualizar una "Tetera", este objeto esta definido * en GLUT, se crea una fuente de luz, y un material */ //Incluimos las librerias #include #include void init(void) { // Ubicamos la fuente de luz en el punto (1.0, 1.0, 1.0) GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; // Activamos la fuente de luz glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); // Queremos que se dibujen las caras frontales // y con un color solido de relleno. glPolygonMode(GL_FRONT, GL_FILL); } void reshape(int w, int h) { if (!h) return; glViewport(0, 0, (GLsizei) w, (GLsizei) h); // Activamos la matriz de proyeccion. glMatrixMode(GL_PROJECTION); // "limpiamos" esta con la matriz identidad. glLoadIdentity(); // Usamos proyeccion ortogonal glOrtho(-200, 200, -200, 200, -200, 200); // Activamos la matriz de modelado/visionado. glMatrixMode(GL_MODELVIEW); // "Limpiamos" la matriz glLoadIdentity(); } // Aqui ponemos lo que queremos dibujar. void display(void) { // Propiedades del material GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f }; GLfloat mat_diffuse[] = { 0.1f, 0.5f, 0.8f, 1.0f }; GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; GLfloat mat_shininess[] = { 100.0f }; // "Limpiamos" el frame buffer con el color de "Clear", en este // caso negro. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode( GL_MODELVIEW_MATRIX ); glLoadIdentity(); // Rotacion de 30 grados en torno al eje x glRotated(25.0, 1.0, 0.0, 0.0); // Rotacion de -30 grados en torno al eje y glRotated(-30.0, 0.0, 1.0, 0.0); // Dibujamos una "Tetera" y le aplico el material glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(125.0); glFlush(); } // Termina la ejecucion del programa cuando se presiona ESC void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; } } // Main del programa. int main(int argc, char **argv) { // Inicializo OpenGL glutInit(&argc, argv); // Activamos buffer simple y colores del tipo RGB glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // Definimos una ventana de medidas 300 x 300 como ventana // de visualizacion en pixels glutInitWindowSize (300, 300); // Posicionamos la ventana en la esquina superior izquierda de // la pantalla. glutInitWindowPosition (0, 0); // Creamos literalmente la ventana y le adjudicamos el nombre que se // observara en su barra de titulo. glutCreateWindow ("Teapot"); // Inicializamos el sistema init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); // ANSI C requiere que main retorne un valor entero. return 0; }sLap
Saludos.
0000 start out (+FD),A ld BC, +7FFF jp 03CB, RAM-CHECKhttp://www.injiniero.es
ayuda con programacion en GL
No hablo español muy bien, pero que comprendo C++
Usted tienes que cambiar lo seguinte
<code>
int main (char **argv, int *argc)
{
</code>
por
<code>
int main (int argc, char **argv)
{
glutInit(&argc, argv);
</code>
Bosque
A veces los árboles no dejan ver el bosque.
¡Gracias wenderson!
sLap
Saludos.
0000 start out (+FD),A ld BC, +7FFF jp 03CB, RAM-CHECKhttp://www.injiniero.es
gracias....
muchas gracias por tu ayuda.... y sigue practicando el español que te sale muy bien