Todo en orden entonces, ese código es un horror, por que no es portable para nada (es esperable que falle, por que está programado para preferir Direct3D en una plataforma donde no existe) ... en esos oscuros tiempos programaba sólo sobre Windows (principalmente por el Cg studio y otras tools que ahora reemplazé) , y como deducirás, sobre Visual Studio.
Ahora, si tuviese que reformularte ese post y código para que testees Ogre, lo haría así:
Como uso Debian y no quiero poner el path completo a RenderSystem_GL, simplemente le hago un enlace simbólico en el directorio actual, en mi caso:
ln -s /usr/lib/x86_64-linux-gnu/OGRE-1.7.4/RenderSystem_GL.so ./
Test.cxx
#include <Ogre.h>
#define RENDERSYSTEM_GL "./RenderSystem_GL"
#define RENDERSYSTEM_GL_NAME "OpenGL Rendering Subsystem"
int main(int argc, char *argv[])
{
Ogre::Root* Root = new Ogre::Root("",""); // omitimos el archivo de plugin y config
Root->loadPlugin(RENDERSYSTEM_GL);
// Tomemos OpenGL como preferido ...
Ogre::RenderSystem* RenderSystem = Root->getRenderSystemByName(RENDERSYSTEM_GL_NAME);
// Seteemos el RenderSystem
Root->setRenderSystem(RenderSystem);
// Inicializemos el RenderSystem sin crear una ventana de render
Root->initialise(false);
// Creemos la ventana de render a 800x600 Windowed mode
Ogre::RenderWindow* Window = Root->createRenderWindow("Ejemplo",800,600,false);
// Listo, Tenemos Una Aplicación Ogre Inicializada =3
// Creemos lo básico para una escena
Ogre::SceneManager* SceneMgr = Root->createSceneManager(Ogre::ST_GENERIC); // Esto del Type mask se desaconseja ! ~ un Scene Manager Basico
Ogre::Camera* Cam = SceneMgr->createCamera("MainCamera"); // Creamos una camara
Ogre::Viewport* Vp = Window->addViewport(Cam); // Un viewport en la ventana Window, usando Cam como origen desde donde se va a renderizar
// Listo, Inicializado
// Entremos en un bucle de render infinito ....
Root->startRendering();
delete Root; // es lo mismo, total, está el return, pero igual lo pongo
return 0;
}
clang++ -lOgreMain Test.cxx -I/usr/include/OGRE -o ./Test #g++ o loquesea, la cosa es compilar, pasar librería y que encuentre el header
Con eso testeás que la app. se compile y ejecute, aunque en tu caso ya compiló, significa que está todo ok mientras tengas la aceleración funcionando.
Ahora, si me pedís la respuesta "correcta", no inicializaría así a Ogre, sino más bien usaría ayuda de cmake para armar un módulo que lidie con tema encabezados y librerías de forma portable a través de las plataformas, si bien puede hacerse con un IDE portable como Code::Blocks, los paths no siempre son los mismos (cmake lidia con eso) ... sobre eso algún script (guarda con el sentido en el que lo uso !!!) de inicialización que lidie con todas estas cochinadas de los plugins, rendersystems y demás temas de inicialización de forma elegante...
Saludos.