2017-09-11 3 views
0

Ich habe eine 2D Engine mit SFML + ImGui entwickelt.SDL2 Szene zu Textur zeichnen. SDL2 RenderTexture wie SFML

Here you can see an image:

Der Editor wird mit ImGui gemacht und die Szene-Fenster ist ein sf::RenderTexture, wo ich die Gameobjects ziehen und dann zu ImGui::Image umgewandelt wird sie im Editor zu machen.

Jetzt muss ich eine 3D-Engine in diesem Jahr in meinem Bachelor-Abschluss erstellen, aber mit SDL2 + ImGui und ich möchte neu erstellen, was ich mit der 2D-Engine gemacht habe.

Ich habe es geschafft, den Editor wie in der 2D-Engine mit dieser Example, die mit ImGui kommt.

3D Editor preview

Aber ich weiß nicht, wie ein Äquivalent von sf::RenderTexture in SDL2 zu schaffen, so kann ich die 3D-Szene dort ziehen und wandeln es in ImGui::Image sie im Editor zu zeigen.

Wenn Sie Code bereitstellen können, wird besser sein. Und wenn Sie möchten, dass ich einen bestimmten Code zur Verfügung stelle, sagen Sie es mir.

Danke!

Antwort

0

Denken Sie nach etwas wie folgt aussehen:

// Create a render texture 
SDL_Texture *target = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, width, height); 

// Activate the render texture 
SDL_SetRenderTarget(renderer, target); 

// (Do your rendering here) 

// Disable the render texture 
SDL_SetRenderTarget(renderer, NULL); 

// (Use the render texture) 
+0

ich ein Renderer für diese Textur erstellen müssen? Weil ich keinen Renderer habe, wenn ich das Fenster erstelle. Ich denke, dass SDL_GL_CreateContext dies tut. Wenn ich einen Renderer erzeuge, muss ich das gleiche Fenster verwenden, das ich in SDL_GL_CreateContext verwendet habe? –

+0

@TinoTano Sie benötigen einen Renderkontext, ja. Das gleiche gilt für SFML - nur versteckt und abstrahiert. Die Textur muss auch das Ziel kennen, z. OpenGL oder DirectX. – Mario

+0

Ich sah einige Beiträge wie diese [link] (https://stackoverflow.com/questions/41091875/is-sdl-renderer-useless-if-i-use-open-l-for-drawing) sagen, dass SDL_Renderer nicht mit mischen kann OpenGL –