SFML如何在精灵(用作地图)上绘制精灵(用作玩家)
SFML how to draw a Sprite(used as a player) on a Sprite(used as map)
我还不熟悉SFML环境,我们今年在学校开始学习我很难用这种方法在另一个精灵上画一个精灵我猜这个s.~Drawable((;用于在另一个窗口上绘制,但我找不到任何实现它的示例。任何人都可以将我重定向到一个好的文档中,该文档对初学者来说都很容易理解。谢谢
PS:我找到了其他方法,但我每次都需要加载图像来更改玩家的精灵图像,我想这会降低游戏的帧速率,具体取决于用户驱动
int sizeX = 1920, sizeY = 1080;
sf::RenderWindow window(sf::VideoMode(sizeX, sizeY), "Test");
window.setFramerateLimit(60); // max FPS a 60
sf::Vector2f player1(10, 10);
sf::Vector2f player2(590, 10);
sf::Sprite paddle1;
sf::Sprite paddle2;
sf::Texture t;
t.loadFromFile("Background.png");
sf::Sprite s(t);
//s.~Drawable();
// chargement du fichier .jpg dans un objet image de type Texture
sf::Texture imageBack1;
sf::Texture imageBack2;
sf::Texture imageForward1;
sf::Texture imageForward2;
sf::Texture imageLeft;
sf::Texture imageRight;
// PLayer2
sf::Texture imageBack1b;
sf::Texture imageBack2b;
sf::Texture imageForward1b;
sf::Texture imageForward2b;
sf::Texture imageLeftb;
sf::Texture imageRightb;
if (!imageBack1.loadFromFile("Back1.png"))
printf("PB de chargement de l'image !n");
if (!imageBack2.loadFromFile("Back2.png"))
printf("PB de chargement de l'image !n");
if (!imageForward1.loadFromFile("Forward1.png"))
printf("PB de chargement de l'image !n");
if (!imageForward2.loadFromFile("Forward2.png"))
printf("PB de chargement de l'image !n");
if (!imageLeft.loadFromFile("Left.png"))
printf("PB de chargement de l'image !n");
if (!imageRight.loadFromFile("Right.png"))
printf("PB de chargement de l'image !n");
//Player2 I guess this can be removed
if (!imageBack1b.loadFromFile("Back1b.png"))
printf("PB de chargement de l'image !n");
if (!imageBack2b.loadFromFile("Back2b.png"))
printf("PB de chargement de l'image !n");
if (!imageForward1b.loadFromFile("Forward1b.png"))
printf("PB de chargement de l'image !n");
if (!imageForward2b.loadFromFile("Forward2b.png"))
printf("PB de chargement de l'image !n");
if (!imageLeftb.loadFromFile("Leftb.png"))
printf("PB de chargement de l'image !n");
if (!imageRightb.loadFromFile("Rightb.png"))
printf("PB de chargement de l'image !n");
/* L’image doit être associée à un objet de type Sprite (équivalent à un rectangle) pour être dessinée. Ici , le sprite s’appelle bonhomme. Après, on ne travaille plus que sur le sprite… image ne sert plus à rien*/
paddle1.setTexture(imageBack1);
paddle2.setTexture(imageBack1);
// Start the game loop
while (window.isOpen())
{
// Poll for events
sf::Event event;
while (window.pollEvent(event))
{
// Close window : exit
if (event.type == sf::Event::Closed)
window.close();
// Escape pressed : exit
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
window.close();
}
window.clear();
// Draw the sprites
window.draw(paddle1);
window.draw(paddle2);
window.draw(s);
window.display();
}
您可以绘制到sf::RenderTexture:https://www.sfml-dev.org/documentation/2.5.1/classsf_1_1RenderTexture.php
并使该渲染纹理成为"精灵"的纹理。
相关文章:
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 绘制精灵会导致分割错误
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- 为什么该代码不绘制精灵C++ SFML
- 仅使用精灵绘制
- 在绘制循环中绘制精灵
- OpenGL精灵绘制质量低
- OpenGL-快速精灵绘制-需要一些指导
- 如何在cocos2d-x3测试版中围绕精灵绘制边界框
- 尝试绘制精灵地图时出现 SFML 错误
- C++SFML精灵没有绘制,但是没有出现错误
- 未在指定位置绘制的精灵
- 在 cocos2d-x v3 中绘制并向场景添加大量精灵(~200)的最佳方法是什么?
- 无法从 Direct2D png 使用 DirectX9 绘制图像精灵
- OpenGL没有绘制我的纹理精灵
- 精灵批次只绘制第一个精灵
- 使用 directX 10 绘制大型精灵时性能低下
- SFML在另一个类中绘制移动精灵
- c++ SFML精灵不能通过类绘制
- SFML只绘制一些精灵