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