Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2011, 10:56   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию SDL+OpenGL в code::blocks

кто нибудь прикручивал опен жл к сдл в среде C::B.
при создании проекта надо выбирать SDL или Open GL

если выбрать создать Open GL там появляется листинг, окно создается методом вин.
Open GL в C::B изначально не был, я его сам установил. Научился создавать окна, отображать спрайты, события. думаю для работы с Open GL достаточно.

я скопировал с инета http://masandilov.ru/opengl/opengl-linux листинг. выбрал создать SDL проект, но ничего не вышло
подскажите что я не правильно делаю


выдает ошибки
Код:
obj\Debug\main.o||In function `Z4Drawv':|
\main.cpp|10|undefined reference to `glTranslatef@12'|
\main.cpp|12|undefined reference to `glBegin@4'|
\main.cpp|13|undefined reference to `glColor3f@12'|
\main.cpp|14|undefined reference to `glVertex3f@12'|
\main.cpp|15|undefined reference to `glColor3f@12'|
\main.cpp|16|undefined reference to `glVertex3f@12'|
\main.cpp|17|undefined reference to `glColor3f@12'|
\main.cpp|18|undefined reference to `glVertex3f@12'|
\main.cpp|19|undefined reference to `glEnd@0'|
obj\Debug\main.o||In function `Z8SDL_mainv':|
\main.cpp|55|undefined reference to `glClearColor@16'|
\main.cpp|56|undefined reference to `glClearDepth@8'|
\main.cpp|57|undefined reference to `glDepthFunc@4'|
\main.cpp|58|undefined reference to `glEnable@4'|
\main.cpp|59|undefined reference to `glShadeModel@4'|
\main.cpp|60|undefined reference to `glLoadIdentity@0'|
\main.cpp|61|undefined reference to `gluPerspective@32'|
\main.cpp|62|undefined reference to `glMatrixMode@4'|
\main.cpp|80|undefined reference to `glFlush@0'|
C:\Program Files\CodeBlocks\SDL-1.2.14\lib\libSDLmain.a(SDL_win32_main.o)||In function `console_main':|
\Users\hercules\trunk\SDL-1.2\.\src\main\win32\SDL_win32_main.c|315|undefined reference to `SDL_main'|
||=== Build finished: 19 errors, 0 warnings ===|
вот этот код
Код:
#include <SDL.h>        // Хидер библиотеки SDL
#include <GL/gl.h>      // Хидеры OpenGL & glu
#include <GL/glu.h>

// Сначала напишем простую функцию, которая будет отрисовывать
// цветной треугольник
void Draw()
{
    // Перемещаем камеру назад
    glTranslatef(0,0,-5);
    // Рисуем треугольник
    glBegin(GL_TRIANGLES);
        glColor3f(0,1,1);
        glVertex3f(-1,0,0);
        glColor3f(1,0,1);
        glVertex3f(1,-1,0);
        glColor3f(1,1,0);
        glVertex3f(1,0,0);
    glEnd();
}

int main()
{
    // Инициализируем SDL. В качестве параметра передаём, какие именно
    // подсистемы нужно инициализировать. Например, можно указать SDL_INIT_AUDIO
    // или SDL_INIT_JOYSTICK для доступа к звуку и джойстику соответственно.
    // Ниже я приведу список возможных флагов.

    // Если произошла ошибка, SDL_Init вернёт "-1"
    if(SDL_Init(SDL_INIT_VIDEO) < 0){
        // Выводим ошибку
        printf("Error while initializing SDL: %sn",SDL_GetError());
        // и выходим из программы
        exit(1);
    }

    // устанавливаем аттрибуты OpenGL. Их больше, чем здесь, но пока
    // нам нужно только эти:
    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);   // *---

    // Далее создаём окно, указывая его размер, глубину цвета, и флаги.
    // Возможные флаги я также перечислю ниже. Для указания нескольких флагов сразу
    // перечисляйте их как 'SDL_FULLSCREEN | SDL_OPENGL | ......'
    if(SDL_SetVideoMode(640,480,32,SDL_OPENGL) == NULL)
    {
        printf("Error while setting up video mode: %sn", SDL_GetError());
        exit(1);
    }

    // Ну а дальше оперируем стандартными функциями OpenGL, которые вам должны
    // быть знакомы:
    glClearColor(0,0,0,0);
    glClearDepth(1.0);
    glDepthFunc(GL_LESS);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f, 640/480,0.1f,100.0f);
    glMatrixMode(GL_MODELVIEW);

    // Небольшой цикл программы. Ничего не делает, ждёт нажатия
    // escape для завершения.
    bool done=false;
    SDL_Event event;
    while(!done)
    {
        while(SDL_PollEvent(&event)){
            if(event.type == SDL_QUIT)
                done=true;
            if(event.type == SDL_KEYDOWN)
            {
                if(event.key.keysym.sym == SDLK_ESCAPE)
                    done=true;
            }
        }
    Draw();
    glFlush();
    SDL_GL_SwapBuffers();
    }

    // Завершаем работу SDL,
    SDL_Quit();

    return 0;
}
SAMOUCHKA вне форума Ответить с цитированием
Старый 22.08.2011, 11:39   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну а кто добавит в список библиотек opengl?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.08.2011, 14:45   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну а кто добавит в список библиотек opengl?
не понял что в исходном листинге ошибка?

ситуация повторяется в третий раз-
когда начинал с++ юзать долго не получалось, со средой программирования подружится не мог но как скомпилировал первую программу, обучение пошло с большим прогрессом.
таже ситуация была с SDL. там хедеры, либы устанавливать, это пугало... но как создал окно, оказалось что все просто

вот и сейчас тоже самое.
подскажите где взять листинг действительно работающей программы SDL c OpenGL. чтоб я мог разобратся что к чему.
уверен, как зделаю первый практический шаг дальше все нормально пойдет.
SAMOUCHKA вне форума Ответить с цитированием
Старый 22.08.2011, 15:00   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

дело не в листинге, а внастройках проекта, там в список используемых библиотек надо добавить opengl(не помню как она точно у gcc называется, gl пока еще там не работал, но можете руками посмотреть название)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.08.2011, 16:53   #5
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
дело не в листинге, а внастройках проекта, там в список используемых библиотек надо добавить opengl(не помню как она точно у gcc называется, gl пока еще там не работал, но можете руками посмотреть название)
кажется понял про что вы говорите
Prject Build options Linker Settings добавил сюда:
opengl32
glu32
gdi32
компилится ошибок не выдает. правда треугольник как обещано не получается, черная поверхность только.
SAMOUCHKA вне форума Ответить с цитированием
Старый 22.08.2011, 18:35   #6
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

спасибо всё заработало самое главное разобрался что к SDL а что к OpenGL относится. я читал супер книгу по OpenGL, там немного по другому, немного практики и всё на свои места встало.
SAMOUCHKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
настройка code blocks Armina Общие вопросы C/C++ 4 23.03.2012 14:16
Code::Blocks. Инициализация Direct3D9 _-Re@l-_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 03.04.2011 13:18
wxWidgets+code::blocks Kill-All-N-Thrash Qt и кроссплатформенное программирование С/С++ 3 20.08.2010 05:53
Code Blocks [Ap][uTekToP] Общие вопросы C/C++ 6 23.09.2009 20:58
CODE::BLOCKS vvviperrr Софт 0 18.12.2008 19:19