tukan |
Дата: Среда, 02.07.2014, 21:07 | Сообщение # 1 |
( sculTech )
Сообщений: [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 |
|
| |