Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.02.2014, 01:00

[ogl] Irrlicht + SFML Device erzeugen schlägt fehl

Hallo zusammen,

ich wollte für mein aktuelles kleines Projekt eigentlich SFML für GUI & 2D Grafiken verwenden (weil sie so schön einfach ist :thumbsup:), während ich für die 3D Darstellung Irrlicht (1.8.1) verwenden wollte. Hab mir gedacht ich könnte das Window ja einfach per SFML erstellen und anschließend das Irrlicht Device hinterher. Das ganze funktioniert auch prima, alles wird korrekt gerendert etc., ABER nur auf meiner integrierten Intel Grafikkarte -.-'
Wenn ich es mit meiner dedizierten Nvidia versuche, schlägt die Erstellung des Irrlicht Device fehl (OGl Context konnte nicht erzeugt werden).

Nvidia Treiber hab ich schon geupdatet, denke auch nicht dass es daran liegt. Weiß jemand zufällig wie ich das richtig hinkriege? :)
Oder wäre es vllt. auch möglich alles was ich per SFML rendern will, in eine RenderTexture zu rendern und ich diese Textur anschließend per Irrlicht zeichne? Sodass sie sich das Window nicht "teilen" müssen?


Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <SFML/Graphics.hpp>
#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

int main() {
    sf::ContextSettings settings;
    settings.depthBits = 16;
    settings.stencilBits = 8;
    settings.majorVersion = 3;
    settings.minorVersion = 0;

    sf::RenderWindow window(sf::VideoMode(1280, 720), "Irrlicht + SFML", sf::Style::Default, settings);

    IrrlichtDevice* device;
    SIrrlichtCreationParameters Parameters;
    Parameters.DriverType = video::EDT_OPENGL;
    Parameters.Bits = 16;
    Parameters.Fullscreen = false;
    Parameters.Stencilbuffer = true;
    Parameters.WindowId = window.getSystemHandle(); // hier hab ich gedacht, übergeb ich doch einfach das Handle
    device = createDeviceEx(Parameters);

    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();

   smgr->addCameraSceneNode(0, vector3df(0, 30, -40), vector3df(0, 5, 0));

    while (window.isOpen())
    {
        sf::Event event;
        device->run();
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        
        device->getTimer()->tick();

        
        driver->beginScene(false, true, SColor(0,0,0,255));
        
        smgr->drawAll();
        guienv->drawAll();

            
        // push und po GL states wie wenn ich SFML mit purem OGL mixen würde
        window.pushGLStates();
        window.draw(...);
        window.popGLStates();

        driver->endScene();
   
    }
    device->drop();
    return 0;
}