使用SFML在另一个类的主窗口中绘制
Drawing in the main window from another class with SFML
我需要一些帮助,因为我正试图制作一款俄罗斯方块游戏,作为我在C++中的第一个项目,但我遇到了一些问题。
我想在主文件中保留主窗口声明,并在BoxRenderer
类的同一窗口上绘制所有的Tetroinos、背景等。
但我的雪碧没有出现,我有一个黑屏,这是我的代码:
main.cpp:
// SpaceOdyssey.cpp : définit le point d'entrée pour l'application console.
//
#include "stdafx.h"
#include <iostream>
#include <SFML/Graphics.hpp>
#include "BoxRenderer.h"
using namespace std;
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 280), "Tetris-like by Orionss");
sf::Texture bgTexture;
if (!bgTexture.loadFromFile("sprites\background.png"))
return EXIT_FAILURE;
BoxRenderer renderer(bgTexture);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
if (event.type == sf::Event::Closed)
window.close();
window.clear();
renderer.render(window);
window.display();
}
return 0;
}
BoxRenderer.cpp:
#include "stdafx.h"
#include "BoxRenderer.h"
BoxRenderer::BoxRenderer(sf::Texture bgTexture)
{
m_bgTexture = bgTexture;
}
void BoxRenderer::render(sf::RenderWindow& win)
{
m_bgTexture.update(win);
sf::Sprite background(m_bgTexture);
win.draw(background);
}
来自void sf::Texture::update(const Window &window)
参考:
从窗口的内容更新纹理。
在此之前,你正在清除窗口,这会覆盖你的纹理,所以它完全是黑色的。你根本不想打m_bgTexture.update(win);
。
相关文章:
- QuadTree只在窗口的右上角绘制
- SFML 文本未绘制在窗口上
- GDI 绘制到外部窗口 (C++)
- 使用标准窗口与wxWidgets一起绘制?
- 如何在SDL2窗口上使用Cairo绘制一条白色直线
- 为什么在GLFW窗口中没有用这个代码在我的屏幕上绘制立方体
- 如何在 direct2d 中使用随其窗口重新缩放的效果绘制图像
- 如何使用WinAPI每帧只重新绘制一次子窗口
- 使用 Win32 将 GDI 绘制大小缩放为窗口大小
- 如何在窗口外绘制图形(OpenGL GLFW)
- SFML参考窗口在绝对位置绘制
- 在窗口大小上绘制的OpenGL消失
- 在 c++ 生成器中检测绘制线的窗口坐标的最佳方法
- 如何在调用函数时将对象绘制到 sfml 窗口上
- 如何将成员从类绘制到窗口 c++ 上
- 如何在子小部件而不是父窗口小部件上绘制一条线
- OpenGL-如何绘制完整的窗口矩形
- 如何调用OnEraseBkgnd()在另一个函数中重新绘制窗口?(MFC)
- WTL 如何在同一窗口中使用 2 个自定义绘制的 CListViewCtr
- 如何在win32中在不覆盖标题栏的情况下围绕窗口绘制矩形