Ce que je suis en train de faire:texture générée sfml n'est pas dessiné à la fenêtre
- dessiner une texture à une fenêtre
:: sf généré Résultat attendu:
- Une texture de remplissage de fenêtre (dans l'exemple de code: un fond vert)
Le résultat:
- Une fenêtre vide (noir)
Ce que je l'ai fait jusqu'à présent:
- chargement essayé dans une texture d'un fichier: Travaux
- essayé enregistrer la texture générée dans un fichier: fonctionne
- essayé de générer une texture plus petite, dans les limites de Texture.getMaximumSize()
- rétrécit le code à un minimum
Les outils que j'utilise:
- OS: Kde Neon 5.10 (basé sur Ubuntu 16.04), le noyau Linux 4.4
- système de construction: qmake
- version de: 2,3
Exemple de code (complètement dépouillé, et inutile sous cette forme, mais il affiche le problème):
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace std;
int main()
{
// width and height of the window
// this will not exceed max size of texture
uint width = 128;
uint height = 128;
// create new window
sf::RenderWindow * window = new sf::RenderWindow(sf::VideoMode(height,width), "Mandelbrot");
// create pixel array
vector<sf::Uint8> * pixels = new vector<sf::Uint8>(height * width * 4);
// fill array with collors;
for (uint i = 0; i < height*width; i++)
{
pixels->at(i*4 + 2) = 255;
}
// create texture
sf::Texture * texture = new sf::Texture();
texture->create(width,height);
texture->update(pixels->data());
// create sprite to hold the texture
sf::Sprite * sprite = new sf::Sprite();
sprite->setTexture(*texture);
sprite->setTextureRect(sf::IntRect(0, 0, width, height));
// draw the sprite
window->draw(*sprite);
// draw buffer to screen
window->display();
// close window on system close action
sf::Event event;
while (window->waitEvent(event))
{
if (event.type == sf::Event::Closed)
{
// close window
window->close();
return 0;
}
}
return 1;
}
Merci! alpha est le quatrième composant, donc 'pixels-> at (i * 4 + 3) = 255;' était ce dont j'avais besoin – Riscky
@Riscky désolé je me suis trompé de commande - corrigé – meowgoesthedog