Split sf::Image into sf::Image and sf::Texture (implements issue #18)
This commit is contained in:
parent
d337a98321
commit
e509f01180
40 changed files with 1585 additions and 1294 deletions
|
@ -18,14 +18,14 @@ int main()
|
|||
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML OpenGL", sf::Style::Default, sf::ContextSettings(32));
|
||||
|
||||
// Create a sprite for the background
|
||||
sf::Image backgroundImage;
|
||||
if (!backgroundImage.LoadFromFile("resources/background.jpg"))
|
||||
sf::Texture backgroundTexture;
|
||||
if (!backgroundTexture.LoadFromFile("resources/background.jpg"))
|
||||
return EXIT_FAILURE;
|
||||
sf::Sprite background(backgroundImage);
|
||||
sf::Sprite background(backgroundTexture);
|
||||
|
||||
// Load an OpenGL texture.
|
||||
// We could directly use a sf::Image as an OpenGL texture (with its Bind() member function),
|
||||
// but here we want more control on it (generate mipmaps, ...) so we create a new one from the image pixels
|
||||
// We could directly use a sf::Texture as an OpenGL texture (with its Bind() member function),
|
||||
// but here we want more control on it (generate mipmaps, ...) so we create a new one from an image
|
||||
GLuint texture = 0;
|
||||
{
|
||||
sf::Image image;
|
||||
|
|
|
@ -33,12 +33,12 @@ int main()
|
|||
}
|
||||
sf::Sound ballSound(ballSoundBuffer);
|
||||
|
||||
// Load the images used in the game
|
||||
sf::Image backgroundImage, leftPaddleImage, rightPaddleImage, ballImage;
|
||||
if (!backgroundImage.LoadFromFile("resources/background.jpg") ||
|
||||
!leftPaddleImage.LoadFromFile("resources/paddle_left.png") ||
|
||||
!rightPaddleImage.LoadFromFile("resources/paddle_right.png") ||
|
||||
!ballImage.LoadFromFile("resources/ball.png"))
|
||||
// Load the textures used in the game
|
||||
sf::Texture backgroundTexture, leftPaddleTexture, rightPaddleTexture, ballTexture;
|
||||
if (!backgroundTexture.LoadFromFile("resources/background.jpg") ||
|
||||
!leftPaddleTexture.LoadFromFile("resources/paddle_left.png") ||
|
||||
!rightPaddleTexture.LoadFromFile("resources/paddle_right.png") ||
|
||||
!ballTexture.LoadFromFile("resources/ball.png"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
@ -56,10 +56,10 @@ int main()
|
|||
end.SetColor(sf::Color(50, 50, 250));
|
||||
|
||||
// Create the sprites of the background, the paddles and the ball
|
||||
sf::Sprite background(backgroundImage);
|
||||
sf::Sprite leftPaddle(leftPaddleImage);
|
||||
sf::Sprite rightPaddle(rightPaddleImage);
|
||||
sf::Sprite ball(ballImage);
|
||||
sf::Sprite background(backgroundTexture);
|
||||
sf::Sprite leftPaddle(leftPaddleTexture);
|
||||
sf::Sprite rightPaddle(rightPaddleTexture);
|
||||
sf::Sprite ball(ballTexture);
|
||||
|
||||
leftPaddle.Move(10, (window.GetView().GetSize().y - leftPaddle.GetSize().y) / 2);
|
||||
rightPaddle.Move(window.GetView().GetSize().x - rightPaddle.GetSize().x - 10, (window.GetView().GetSize().y - rightPaddle.GetSize().y) / 2);
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Graphics.hpp>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
|
||||
|
||||
void DisplayError();
|
||||
|
@ -88,32 +88,31 @@ int main()
|
|||
// Create the main window
|
||||
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Shader");
|
||||
|
||||
// Create the render image
|
||||
sf::RenderImage image;
|
||||
if (!image.Create(window.GetWidth(), window.GetHeight()))
|
||||
// Create the render texture
|
||||
sf::RenderTexture texture;
|
||||
if (!texture.Create(window.GetWidth(), window.GetHeight()))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
// Load a background image to display
|
||||
sf::Image backgroundImage;
|
||||
if (!backgroundImage.LoadFromFile("resources/background.jpg"))
|
||||
// Load a background texture to display
|
||||
sf::Texture backgroundTexture;
|
||||
if (!backgroundTexture.LoadFromFile("resources/background.jpg"))
|
||||
return EXIT_FAILURE;
|
||||
sf::Sprite background(backgroundImage);
|
||||
backgroundImage.SetSmooth(false);
|
||||
sf::Sprite background(backgroundTexture);
|
||||
|
||||
// Load a sprite which we'll move into the scene
|
||||
sf::Image entityImage;
|
||||
if (!entityImage.LoadFromFile("resources/sprite.png"))
|
||||
sf::Texture entityTexture;
|
||||
if (!entityTexture.LoadFromFile("resources/sprite.png"))
|
||||
return EXIT_FAILURE;
|
||||
sf::Sprite entity(entityImage);
|
||||
sf::Sprite entity(entityTexture);
|
||||
|
||||
// Load the text font
|
||||
sf::Font font;
|
||||
if (!font.LoadFromFile("resources/sansation.ttf"))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
// Load the image needed for the wave shader
|
||||
sf::Image waveImage;
|
||||
if (!waveImage.LoadFromFile("resources/wave.jpg"))
|
||||
// Load the texture needed for the wave shader
|
||||
sf::Texture waveTexture;
|
||||
if (!waveTexture.LoadFromFile("resources/wave.jpg"))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
// Load all shaders
|
||||
|
@ -138,7 +137,7 @@ int main()
|
|||
shaders["edge"].SetCurrentTexture("texture");
|
||||
shaders["fisheye"].SetCurrentTexture("texture");
|
||||
shaders["wave"].SetCurrentTexture("texture");
|
||||
shaders["wave"].SetTexture("wave", waveImage);
|
||||
shaders["wave"].SetTexture("wave", waveTexture);
|
||||
shaders["pixelate"].SetCurrentTexture("texture");
|
||||
|
||||
// Define a string for displaying the description of the current shader
|
||||
|
@ -211,19 +210,19 @@ int main()
|
|||
globalShader.Update(mouseX, mouseY);
|
||||
|
||||
// Animate the entity
|
||||
float entityX = (cos(clock.GetElapsedTime() * 0.0013f) + 1.2f) * 300;
|
||||
float entityY = (cos(clock.GetElapsedTime() * 0.0008f) + 1.2f) * 200;
|
||||
float entityX = (std::cos(clock.GetElapsedTime() * 0.0013f) + 1.2f) * 300;
|
||||
float entityY = (std::cos(clock.GetElapsedTime() * 0.0008f) + 1.2f) * 200;
|
||||
entity.SetPosition(entityX, entityY);
|
||||
entity.Rotate(window.GetFrameTime() * 0.1f);
|
||||
|
||||
// Draw the background and the moving entity to the render image
|
||||
image.Clear();
|
||||
image.Draw(background, backgroundShader.GetShader());
|
||||
image.Draw(entity, entityShader.GetShader());
|
||||
image.Display();
|
||||
// Draw the background and the moving entity to the render texture
|
||||
texture.Clear();
|
||||
texture.Draw(background, backgroundShader.GetShader());
|
||||
texture.Draw(entity, entityShader.GetShader());
|
||||
texture.Display();
|
||||
|
||||
// Draw the contents of the render image to the window
|
||||
sf::Sprite screen(image.GetImage());
|
||||
// Draw the contents of the render texture to the window
|
||||
sf::Sprite screen(texture.GetTexture());
|
||||
window.Draw(screen, globalShader.GetShader());
|
||||
|
||||
// Draw the interface texts
|
||||
|
|
|
@ -75,12 +75,12 @@ INT WINAPI WinMain(HINSTANCE instance, HINSTANCE, LPSTR, INT)
|
|||
sf::RenderWindow SFMLView1(view1);
|
||||
sf::RenderWindow SFMLView2(view2);
|
||||
|
||||
// Load some images to display
|
||||
sf::Image image1, image2;
|
||||
if (!image1.LoadFromFile("resources/image1.jpg") || !image2.LoadFromFile("resources/image2.jpg"))
|
||||
// Load some textures to display
|
||||
sf::Texture texture1, texture2;
|
||||
if (!texture1.LoadFromFile("resources/image1.jpg") || !texture2.LoadFromFile("resources/image2.jpg"))
|
||||
return EXIT_FAILURE;
|
||||
sf::Sprite sprite1(image1);
|
||||
sf::Sprite sprite2(image2);
|
||||
sf::Sprite sprite1(texture1);
|
||||
sf::Sprite sprite2(texture2);
|
||||
sprite1.SetOrigin(sprite1.GetSize() / 2.f);
|
||||
sprite1.SetPosition(sprite1.GetSize() / 2.f);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue