0
#include<SFML/Window.hpp>
#include<SFML/Graphics.hpp>
#include<cstdint>
#include<iostream>
const int width = 500;
const int height = 500;
int main(){
sf::RenderWindow window(sf::VideoMode(width, height), "Window", sf::Style::Close);
window.setVerticalSyncEnabled(true);
sf::Event event;
uint8_t *pixels = new uint8_t[height *width *4];
for(int i = 0; i < height * width; i+= 4){
pixels[i] = 00; //r
pixels[i + 1] = 00;//g
pixels[i + 2] = 00;//b
pixels[i + 3] = 255;//a
}
sf::Texture texture;
texture.create(width, height);
sf::Sprite sprite;
while(window.isOpen()){
while(window.pollEvent(event)){
if(event.type == sf::Event::Closed){
window.close();
}
}
window.clear(sf::Color::White);
texture.update(pixels);
sprite.setTexture(texture);
window.draw(sprite);
window.display();
}
delete pixels;
return 0;
}
我收到了以下程序的输出是: 为什么我的精灵不是在SFML的整个窗口上绘制的?
我不明白为什么只有窗口的某些部分实际上是绘制。由于该程序非常小,我会从常规上猜测问题是通过切换高度和宽度变量创建的,但由于两者相同,所以这里不是这种情况。
SFML文档说,如果我没有明确地将纹理的大小放在sprite.setTexture()
中,它将默认为纹理的大小。
为什么这种奇怪的行为?我错过了什么吗?
我也增加了4个不是1. – user45914123
@ 123:是的。我看到了。那是对的。 –
我应该删除该问题吗?因为这是一个小问题。 – user45914123