Разработка и ромхакинг > Ромхакинг и программирование
какие программы использовать для создания своих игр?
<< < (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 должно хватить.
Навигация
Главная страница сообщений
Предыдущая страница

Перейти к полной версии