Browse Source

Initialize OpenGL viewport directly before rendering the gui

Karsten Hachmeister 5 years ago
parent
commit
81899a2dd9

+ 14 - 10
Samples/basic/sfml2/src/RenderInterfaceSFML.cpp

@@ -82,22 +82,14 @@ sf::RenderWindow *RmlUiSFMLRenderer::GetWindow()
 
 
 void RmlUiSFMLRenderer::Resize()
 void RmlUiSFMLRenderer::Resize()
 {
 {
-	static sf::View View;
-	View.setViewport(sf::FloatRect(0, (float)MyWindow->getSize().x, (float)MyWindow->getSize().y, 0));
-	MyWindow->setView(View);
-
-	glMatrixMode(GL_PROJECTION);
-	glLoadIdentity();
-	glOrtho(0, MyWindow->getSize().x, MyWindow->getSize().y, 0, -1, 1);
-	glMatrixMode(GL_MODELVIEW);
-
-	glViewport(0, 0, MyWindow->getSize().x, MyWindow->getSize().y);
 }
 }
 
 
 // Called by RmlUi when it wants to render geometry that it does not wish to optimise.
 // Called by RmlUi when it wants to render geometry that it does not wish to optimise.
 void RmlUiSFMLRenderer::RenderGeometry(Rml::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, const Rml::Core::TextureHandle texture, const Rml::Core::Vector2f& translation)
 void RmlUiSFMLRenderer::RenderGeometry(Rml::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, const Rml::Core::TextureHandle texture, const Rml::Core::Vector2f& translation)
 {
 {
 	MyWindow->pushGLStates();
 	MyWindow->pushGLStates();
+	initViewport();
+
 	glTranslatef(translation.x, translation.y, 0);
 	glTranslatef(translation.x, translation.y, 0);
 
 
 	std::vector<Rml::Core::Vector2f> Positions(num_vertices);
 	std::vector<Rml::Core::Vector2f> Positions(num_vertices);
@@ -188,6 +180,8 @@ void RmlUiSFMLRenderer::RenderCompiledGeometry(Rml::Core::CompiledGeometryHandle
 	RmlUiSFMLRendererGeometryHandler *RealGeometry = (RmlUiSFMLRendererGeometryHandler *)geometry;
 	RmlUiSFMLRendererGeometryHandler *RealGeometry = (RmlUiSFMLRendererGeometryHandler *)geometry;
 
 
 	MyWindow->pushGLStates();
 	MyWindow->pushGLStates();
+	initViewport();
+
 	glTranslatef(translation.x, translation.y, 0);
 	glTranslatef(translation.x, translation.y, 0);
 	glEnable(GL_BLEND);
 	glEnable(GL_BLEND);
 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -308,3 +302,13 @@ void RmlUiSFMLRenderer::ReleaseTexture(Rml::Core::TextureHandle texture_handle)
 {
 {
 	delete (sf::Texture *)texture_handle;
 	delete (sf::Texture *)texture_handle;
 }
 }
+
+void RmlUiSFMLRenderer::initViewport() {
+	glViewport(0, 0, MyWindow->getSize().x, MyWindow->getSize().y);
+
+	glMatrixMode(GL_PROJECTION);
+	glLoadIdentity();
+
+	glOrtho(0, MyWindow->getSize().x, MyWindow->getSize().y, 0, -1, 1);
+	glMatrixMode(GL_MODELVIEW);
+}

+ 3 - 0
Samples/basic/sfml2/src/RenderInterfaceSFML.h

@@ -83,6 +83,9 @@ public:
 	/// Called by RmlUi when a loaded texture is no longer required.
 	/// Called by RmlUi when a loaded texture is no longer required.
 	void ReleaseTexture(Rml::Core::TextureHandle texture_handle) override;
 	void ReleaseTexture(Rml::Core::TextureHandle texture_handle) override;
 
 
+private:
+	void initViewport();
+
 private:
 private:
 	sf::RenderWindow *MyWindow;
 	sf::RenderWindow *MyWindow;
 };
 };