Создать игру, создание игр, конструктора игр, игровые движки, разработка игр, сделать игру
Приветствую Вас Гость · Вход · Регистрация  ·  Новые сообщения · Участники · Правила · Поиск · RSS
  • Страница 1 из 1
  • 1
С++ и ОСВЕЩЕНИЕ! ПОМОГИТЕ ПРОШУ!
tukan Дата: Среда, 02.07.2014, 21:07 | Сообщение # 1
( sculTech )
Просмотр профиля: tukan

Сообщений: [4]
Добрый день, а может быть и вечер короче не буду тянуть кота за хвост и
перейду сразу к делу. У меня вопрос к тем людям которые используют SFML:
Как сделать в SFML свет (освещение) желательно с примером. ПРОШУ ПОМОГИТЕ ТРИ ДНЯ ДОЛБАЮСЬ!!!

Я нашел вот эту либу SFML Light System  для динамического освещения уровня по скринам все классно, но при компиляции кода Студия жестко матерится вот посмотрите:




вот что она пишет если на скрине плохо видно:

Цитата
1>  main.cpp
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Vec2f::Vec2f(float,float)" (??0Vec2f@@QAE@MM@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall AABB::AABB(class Vec2f const &,class Vec2f const &)" (??0AABB@@QAE@ABVVec2f@@0@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::LightSystem::RenderLightTexture(void)" (?RenderLightTexture@LightSystem@ltbl@@QAEXXZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::LightSystem::RenderLights(void)" (?RenderLights@LightSystem@ltbl@@QAEXXZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::LightSystem::AddEmissiveLight(class ltbl::EmissiveLight *)" (?AddEmissiveLight@LightSystem@ltbl@@QAEXPAVEmissiveLight@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::LightSystem::AddConvexHull(class ltbl::ConvexHull *)" (?AddConvexHull@LightSystem@ltbl@@QAEXPAVConvexHull@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::LightSystem::AddLight(class ltbl::Light *)" (?AddLight@LightSystem@ltbl@@QAEXPAVLight@2@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::LightSystem::SetView(class sf::View const &)" (?SetView@LightSystem@ltbl@@QAEXABVView@sf@@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall ltbl::LightSystem::~LightSystem(void)" (??1LightSystem@ltbl@@QAE@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall ltbl::LightSystem::LightSystem(class AABB const &,class sf::RenderWindow *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0LightSystem@ltbl@@QAE@ABVAABB@@PAVRenderWindow@sf@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::Light::SetAlwaysUpdate(bool)" (?SetAlwaysUpdate@Light@ltbl@@QAEX_N@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::Light::SetCenter(class Vec2f)" (?SetCenter@Light@ltbl@@QAEXVVec2f@@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::EmissiveLight::SetRotation(float)" (?SetRotation@EmissiveLight@ltbl@@QAEXM@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::EmissiveLight::SetCenter(class Vec2f const &)" (?SetCenter@EmissiveLight@ltbl@@QAEXABVVec2f@@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::EmissiveLight::SetTexture(class sf::Texture *)" (?SetTexture@EmissiveLight@ltbl@@QAEXPAVTexture@sf@@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall ltbl::EmissiveLight::EmissiveLight(void)" (??0EmissiveLight@ltbl@@QAE@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::ConvexHull::SetWorldCenter(class Vec2f const &)" (?SetWorldCenter@ConvexHull@ltbl@@QAEXABVVec2f@@@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::ConvexHull::CalculateAABB(void)" (?CalculateAABB@ConvexHull@ltbl@@QAEXXZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall ltbl::ConvexHull::CalculateNormals(void)" (?CalculateNormals@ConvexHull@ltbl@@QAEXXZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: bool __thiscall ltbl::ConvexHull::LoadShape(char const *)" (?LoadShape@ConvexHull@ltbl@@QAE_NPBD@Z)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall ltbl::ConvexHull::ConvexHull(void)" (??0ConvexHull@ltbl@@QAE@XZ)"
1>main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall ltbl::Light_Point::Light_Point(void)" (??0Light_Point@ltbl@@QAE@XZ)"
1>E:\Egor\projects\[labX3]\[labX3]\Release\[labX3].exe : fatal error LNK1120: неразрешенных внешних элементов: 22

а вот мой код:

Код
#include <LTBL/Light/LightSystem.h>
#include <LTBL/Light/Light_Point.h>
#include <LTBL/Utils.h>

#include <assert.h>
#include <SFML/Graphics.hpp>
#include <sstream>
int main(int argc, char* args[])
{   
      sf::VideoMode vidMode;
      vidMode.width = 800;
      vidMode.height = 600;
      vidMode.bitsPerPixel = 32;
      assert(vidMode.isValid());
      sf::RenderWindow win;
      win.create(vidMode, "Let there be Light - Demo");
      sf::View view;
      sf::Vector2u windowSize(win.getSize());
      view.setSize(sf::Vector2f(static_cast<float>(windowSize.x), static_cast<float>(windowSize.y)));
      view.setCenter(view.getSize() / 2.0f);
      // ---------------------- Background Image ---------------------
      sf::Texture backgroundImage;
      assert(backgroundImage.loadFromFile("data/background.png"));
      // Tiling background
      backgroundImage.setRepeated(true);
      sf::Sprite backgroundSprite(backgroundImage);
      backgroundSprite.setTextureRect(sf::IntRect(0, 0, vidMode.width * 2, vidMode.height * 2));
      backgroundSprite.setPosition(-400.0f, -400.0f);
      // --------------------- Light System Setup ---------------------
      ltbl::LightSystem ls(AABB(Vec2f(0.0f, 0.0f), Vec2f(static_cast<float>(vidMode.width), static_cast<float>(vidMode.height))), &win, "data/lightFin.png", "data/shaders/lightAttenuationShader.frag");
      // Create a light
      ltbl::Light_Point* testLight = new ltbl::Light_Point();
      testLight->m_intensity = 2.0f;
      testLight->m_center = Vec2f(200.0f, 200.0f);
      testLight->m_radius = 600.0f;
      testLight->m_size = 15.0f;
      testLight->m_spreadAngle = ltbl::pifTimes2;
      testLight->m_softSpreadAngle = 0.0f;
      testLight->CalculateAABB();
      testLight->m_bleed = 0.4f;
      testLight->m_linearizeFactor = 0.2f;
      ls.AddLight(testLight);
      testLight->SetAlwaysUpdate(true);
      // Create a light
      ltbl::Light_Point* testLight2 = new ltbl::Light_Point();
      testLight2->m_center = Vec2f(200.0f, 200.0f);
      testLight2->m_radius = 500.0f;
      testLight2->m_size = 30.0f;
      testLight2->m_color.r = 0.5f;
      testLight2->m_intensity = 1.5f;
      testLight2->m_spreadAngle = ltbl::pifTimes2;
      testLight2->m_softSpreadAngle = 0.0f;
      testLight2->CalculateAABB();
      ls.AddLight(testLight2);
      testLight2->SetAlwaysUpdate(false);
      // Create an emissive light
      ltbl::EmissiveLight* emissiveLight = new ltbl::EmissiveLight();
      sf::Texture text;
      if(!text.loadFromFile("data/emissive.png"))
          abort();
      emissiveLight->SetTexture(&text);
      emissiveLight->SetRotation(45.0f);
      emissiveLight->m_intensity = 1.3f;
      ls.AddEmissiveLight(emissiveLight);
      emissiveLight->SetCenter(Vec2f(500.0f, 500.0f));
      // Create a hull by loading it from a file
      ltbl::ConvexHull* testHull = new ltbl::ConvexHull();
      if(!testHull->LoadShape("data/testShape.txt"))
          abort();
      // Pre-calculate certain aspects
      testHull->CalculateNormals();
      testHull->CalculateAABB();
      testHull->SetWorldCenter(Vec2f(300.0f, 300.0f));
      testHull->m_renderLightOverHull = true;
      ls.AddConvexHull(testHull);
      // ------------------------- Game Loop --------------------------
      sf::Event eventStructure;
      bool quit = false;
      ls.m_useBloom = true;
      while(!quit)
      {
          while(win.pollEvent(eventStructure))
              if(eventStructure.type == sf::Event::Closed)
              {
                  quit = true;
                  break;
              }
          if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
              view.move(sf::Vector2f(-1.0f, 0.0f));
          else if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
              view.move(sf::Vector2f(1.0f, 0.0f));
          if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
              view.move(sf::Vector2f(0.0f, -1.0f));
          else if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
             view.move(sf::Vector2f(0.0f, 1.0f));
          sf::Vector2i mousePos = sf::Mouse::getPosition(win);
          //testLight2->IncCenter(ltbl::Vec2f(0.1f, 0.0f));
          // Update light
          testLight->SetCenter(Vec2f(static_cast<float>(mousePos.x), static_cast<float>(vidMode.height) - static_cast<float>(mousePos.y)));
          win.clear();
          win.setView(view);
          ls.SetView(view);
          // Draw the background
          win.draw(backgroundSprite);
          // Calculate the lights
          ls.RenderLights();
          // Draw the lights
          ls.RenderLightTexture();
          //ls.DebugRender();
          win.display();
      }
      win.close();
}

что делать?

Добавлено (02.07.2014, 21:07)
---------------------------------------------
Тема закрыта. Я проблему с линковкой решил (у кого такая проблема вам сюда http://nanoblog.agentd.ru/let-there-be-light-sfml-2-1/ в комментариях ответ)

Сообщение отредактировал: tukan - Вторник, 01.07.2014, 17:13
  • Страница 1 из 1
  • 1
Поиск:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр