| Разработка и ромхакинг > Ромхакинг и программирование |
| какие программы использовать для создания своих игр? |
| << < (11/11) |
| ASM:
--- Цитата: Гламурная киса от 22 Декабрь 2012, 23:03:36 ---ругается на хедер gl.h --- Конец цитаты --- Скорее всего что-то в коде твоего проекта. Ради интереса сейчас попробовал подключить SDL-ку к в свою IDE, QtCreator. В качестве компилятора я использовал порт gcc под винду (MinGW), версии 4.6.2. 1. В начале скомпилировал SDL-библиотеку: 1.1. Взял сорцы тут: http://www.libsdl.org/release/SDL-1.2.15.tar.gz 1.2. Запустил MinGW MSYS, для компиляции выполнил следующее (никакие флаги не указывал, все было по дефолту): --- Код: ---cd /c/Qt/build/SDL-1.2.15 ./configure --prefix=/mingw make -j3 make -j3 install --- Конец кода --- 1.3. Скомпилированная динамическая либа, хидеры, и статическая либа - все скопировалось само куда нужно. SDL.dll в C:\Qt\MinGW\bin \SDL в C:\Qt\MinGW\include libSDL.a и libSDLmain.a и прочий стаф в C:\Qt\MinGW\lib 2. Теперь в качестве примера использования OpenGL + SDL, создал следующий проект в QtCreator'е (Non-Qt Project -> Plain C Project). 2.1. Добавил такие параметры в файл проекта .pro: --- Код: ---LIBS += -L../../MinGW/lib LIBS += -lmingw32 -lSDLmain -lSDL -lopengl32 INCLUDEPATH += ../../MinGW/include DEPENDPATH += ../../MinGW/include --- Конец кода --- Подробнее на картинке 2.2. Определил переменную окружения для запуска (вкладка Projects -> Run): 2.3. Вставил в main.c код первого попавшегося проекта с OpenGL + SDL: Этим проектом был SDLgears-1.0.2.tar.gz, взятый на официальном сайте: http://www.libsdl.org/opengl/index.php Просто скопировал содержимое SDLgears.c в main.c, который был в проекте с заменой содержимого и подправил путь к хэдеру SDL.h: 2.4. Скомпилил проект, всё отлично собралось и запустилось: Короче, все нормально с этим OpenGL и SDL, смотри в сторону своего кода. Может что-то не так делаешь? Например, не вижу у тебя подлинкованной opengl32. Есть возможность выложить код сюда? Проект для QtCreator: http://rghost.ru/42486023 |
| Гламурная киса:
--- Код: ---#ifdef __cplusplus #include <cstdlib> #else #include <stdlib.h> #endif #ifdef __APPLE__ #include <SDL/SDL.h> #else #include <SDL.h> #endif #include <GL/gl.h> #include <GL/glu.h> float xrf, yrf, zrf; int fps=0; void DrawGLScene(); Uint32 my_callbackfunc(Uint32 interval, void *param); void* my_callback_param; int main(){ if ( SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO) < 0 ){ printf("Unable to init SDL: %s\n", SDL_GetError()); exit(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(640,480,32,SDL_OPENGL) == NULL ){ printf("Unable to set 640x480 video: %s\n", SDL_GetError()); exit(1); } glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,640/480,0.1f,100.0f); glMatrixMode(GL_MODELVIEW); SDL_TimerID my_timer_id = SDL_AddTimer(1000, my_callbackfunc, my_callback_param); int done=0; while(done == 0){ SDL_Event event; while ( SDL_PollEvent(&event) ){ if ( event.type == SDL_QUIT ){ done = 1; } if ( event.type == SDL_KEYDOWN ){ if ( event.key.keysym.sym == SDLK_ESCAPE ){ done = 1; } } } DrawGLScene(); glFlush(); SDL_GL_SwapBuffers(); fps++; } return 0; } void DrawGLScene(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f,0.0f,-7.0f); // Сдвинуть вглубь экрана glRotatef(xrf, 1.0f, 0.0f, 0.0f); // Вращение куба по X, Y & Z glRotatef(yrf, 0.0f, 1.0f, 0.0f); // Вращение куба по X, Y & Z glRotatef(zrf, 0.0f, 0.0f, 1.0f); // Вращение куба по X, Y & Z glBegin(GL_QUADS); // Рисуем куб glColor3f(0.0f,1.0f,0.0f); // Синий 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); // Право низ glColor3f(1.0f,0.5f,0.0f); // Оранжевый 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); // Низ право glColor3f(1.0f,0.0f,0.0f); // Красный 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); // Низ право glColor3f(1.0f,1.0f,0.0f); // Желтый 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); // Низ право glColor3f(0.0f,0.0f,1.0f); // Синий 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); // Низ право glColor3f(1.0f,0.0f,1.0f); // Фиолетовый 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(); // Закончили квадраты xrf -= 0.15; yrf -= 0.2; zrf -= 0.25; } Uint32 my_callbackfunc(Uint32 interval, void *param){ printf("FPS = %d\n", fps); fps=0; return interval; } --- Конец кода --- |
| ASM:
У меня этот код отлично собирается последним MinGW'ом. Единственное - поменял int main() на int main(int argc, char **argv) |
| tema_crush:
Для создания приставочного типа несложных игрушек Flash должно хватить. |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |