none
VisualStudioExpress2012Desktop SFML 1.6-2.1. Подключение SFML 2.0 к компилятору [Visual Cpp 10] Visual Studio Express 2010 Desktop RRS feed

Все ответы

  • Создаете проект на С++ в VS. Открываете свойства проекта.

    В поле "C/C++ - Общие - Дополнительные каталоги включаемых файлов" добавляете путь к включаемым файлам SFML (к ее папке "include").

    В поле "Компоновщик - Общие - Дополнительные каталоги библиотек" добавляете путь к папке SFML "lib".

    В поле "Компоновщик - Ввод - Дополнительные зависимости" перечисляете требуемые Вам модули. Причем, указывать нужно СТАТИЧЕСКИЕ библиотеки - файлы с суффиксом "-s.lib", т.к. динамические варианты SFML 1.6 требуют наличия VC++ runtime 9.0, т.е. версии VS2008, а не VS2013.

    Вот и все.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  • Интересно, пока я отвечал на один вопрос, Вы его полностью изменили. Что же Вас все-таки интересует? Как SFML подключить, или как работать в VS?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  • Тему нужно перенести в категорию вопросов, а не обсуждений. Вы ведь вопрос задали, не так ли?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  •  Сменил вопрос, потому что только начал осваивать VS. До VS работал с Code::Blocks 13.12. В последней трудно подключать и компилятор и библиотеки, мало информации, а ссылки:Codeblocks SFML 1.6-2.1 ... не дают исчерпывающей информации. Постоянно появлялись ошибки Linker. После, посмотрел видео на Youtube: SFML C++ пишем игру платформер , заинтересовался средой, в которой работает автор - файлы библиотеки XML он подключает простым копированием в проект. Что за среду он использует, по-моему VisualStudio. 
  • Да, похоже автор там работает в VS. Версию наверняка не скажу, т.к. окно целиком не показывается, но по некоторым признакам - это VS 2010. Впрочем, в данном случае это не существенно. У Вас еще вопросы есть, или тема исчерпана?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  •        Вот материалы по теме с исчерпывающей информацией: для начала прочесть статью - http://www.sfml-dev.org/tutorials/2.0/start-vc.php. В статье есть ошибка: подклчение осуществляется в свойствах проекта не ко всей конфигурации, а к ActiveDebug только. Эта ошибка исправлена в видео:  Подключение SFML в Visual Studio 2010 на youyube. Важно, чтобы библиотека была такой же разрядности, что и компилятор: в случае VisualStudioExpress2010 разрядность требуется [x86]. Нельзя путать с разрядностью ОС.

          После подключения библиотеки к проекту сразу встает вопрос: как загрузить в память картинки, каких форматов. Формат *.png, *jpeg не поддерживается SFML 2.0. Прочесть можно тут: http://www.sfml-dev.org/tutorials/2.0/graphics-sprite.php. В этой же статье опиcывается 'White Square' problem. Пример кода: 

    ------------------------------------------------

    #include <SFML/Graphics.hpp>

    using namespace sf;

    int main()
    {
    RenderWindow window(VideoMode(200, 200), "Test!");

    CircleShape MyCircle(100.f);
    MyCircle.setFillColor(Color::Green);

    Texture t;// t - texture name
    t.loadFromFile("thelostvikings_fang.png");


    float currentFrame=0;
    Sprite s;
    s.setTexture(t);
    s.setTextureRect( IntRect(1,78,29,33) ); // где, x y Width hight
    s.setPosition(1, 77);


    Clock clock;


    while (window.isOpen())
    {
    // пренебрежение тактами процессора-привязка смещения картинки ко времени
    float time = clock.getElapsedTime().asMilliseconds();
    clock.restart();
    //
    Event event;
    while (window.pollEvent(event))
    {
    if (event.type == Event::Closed)
    window.close();
    }

    if (Keyboard::isKeyPressed(Keyboard::Left))
    {
    s.move(-0.1*time,0);

    currentFrame += 0.005*time;
    if (currentFrame > 6) currentFrame -=6 ;
    // зеркальное отображение: прибавить\вычесть ширину спрайта
    s.setTextureRect(IntRect(1*int(currentFrame)+29,78,-29,33));
    }
    if (Keyboard::isKeyPressed(Keyboard::Right))
    {
    s.move(0.1*time,0);

    currentFrame += 0.005*time;
    if (currentFrame > 6) currentFrame -=6 ;
    s.setTextureRect(IntRect(1*int(currentFrame),78,29,33));
    }
    if (Keyboard::isKeyPressed(Keyboard::Up))
    {
    s.move(0,0.1*time);
    }


    window.clear();
    window.draw(s);
    window.display();
    }

    return 0;
    }

    ------------------------------------------------

        ... при отладке рисуется окно с белым прямоугольником вместо спрайта. В ком.строке вывод: Failed to load image "thelostvikings_fang.png". Reason: unable to open file. Замечу, файл "thelostvikings_fang.png" находится в рабочем каталоге с проектом. Поэтому такой короткий путь. Я предполагаю, что причиной может служить неправильное расположение спрайта в памяти, неверные размеры файла. Тема поднималась здесь: http://gamedev.stackexchange.com/questions/58195/sfml-fail-to-load-image-as-texture.

    Спрайты можно скачать тут: http://www.engine001.com/resources/sprites/


    Форум MSDN C++



  • А зачем Вы это все написали? Это имеет какое то отношение к технологиям MS?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  •     К технологиям Microsoft - не имеет, если проблема не в подключении к компилятору. Не могу  найти ответ, на SFML большие перспективы вплоть до написания медиаплеера. Неплохо разобраться, потому что тема не освещена в должной мере. После обсуждения тему можно удалить. А где и с кем обсуждать в сети думаю несущественно важно, главное, чтобы со средой был знаком и владел на прикладном уровне языком.

    Форум MSDN C++