привет, дружыщща! изучаю простенькие примеры OpenGL + SDL сорцов под FreeBSD, но не получается их скомпилять. все время линкер ругается следующим образом: т.е. такое ощущение что OpenGL либа все же линкером не подцепилась, т.к. OpenGL ф-ции линкер не распознает. подскажите, чтО проверить в первую очередь? большое спасибо.
Quantum, да, glut.h имеется в /usr/X11R6/include/GL щас попробовал добавить #include <GL/glut.h>, ничего не изменилось. t00x, нет, не используется. примеры вообще оч. минималистичны.
вот примерчик: Код (Text): #include <SDL/SDL.h> #include <GL/gl.h> //#include <GL/glut.h> #include <stdio.h> #include <stdlib.h> int main() { if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { printf( "Error: %s\n", SDL_GetError() ); return 1; } atexit( SDL_Quit ); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1); SDL_GL_SetAttribute(SDL_GL_RED_SIZE,5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,6); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,5); if ( SDL_SetVideoMode(1024,768,32,SDL_OPENGL) == NULL ) { printf( "Error: %s\n", SDL_GetError() ); return 1; } SDL_WM_SetCaption("OpenGL with SDL!", "OpenGL" ); glViewPort(80,0,480,480); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1.0,1.0,-1.0,1.0,1.0,100.0); glClearColor(0,0,0,0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glColor3f(1.0,0,0); glVertex3f(0.0,1.0,-2.0); glColor3f(0,1.0,0); glVertex3f(1.0,-1.0,-2.0); glColor3f(0,0,1.0); glVertex3f(-1.0,-1.0,-2.0); glEnd(); glFlush(); printf( "OKEY!\n"); SDL_GL_SwapBuffers(); SDL_Delay(5000); return 0; }
t00x GL/, а не gl/. У меня эти функции обьявлены в GL/gl.h и никакого opengl.h и близко нет. Поэтому инклудить нужно glut.h, который в свою очередь подключит необходимые хидеры. Заголовки, а не библиотеки, как я уже писал выше.
сейчас на др. фрибзд на др. машине попробовал, те же ерроры. может быть нужно opengl либы отдельно доставлять? добавлено: дружыщща, подскажите какие либы в первую очередь проверить? а то может чего-то нехватает..
сейчас попробовал следующий код: Код (Text): #include <GL/gl.h> int main (int argc, char **argv) { void *fun = (void *) glBegin; printf ("glBegin is %p\n", fun); return 0; } компилю. выводит: далее пытаюсь сделать то же самое но для ф-ции glViewPort: Код (Text): #include <GL/gl.h> int main (int argc, char **argv) { void *fun = (void *) glViewPort; printf ("glViewPort is %p\n", fun); return 0; } и не компилицца, выдает: так в каком хидере эта glViewPort ?
сейчас пинаться будете, но я все выяснил) я вместо glViewport писал glViewPort, и никто не заметил на глаз. извиняюсь за причиненное беспокойство!
varnie Думаю, что заметили многие, но эта мелочь не связана с ошибками в первом посте. Поэтому никто не обратил на неё внимания.