Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246

Почему в окне SFML не отображается содержимое?

09.08.2015, 12:28. Показов 1998. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пытаюсь написать приложение на SFML, и возникла проблема.
Когда я создаю окно, оно создаётся пустым.. просто пустым, есть только рамка, внтури нет ничего, просто прозрачное всё, даже фона нет. И окно ни на что не реагирует. Какие причины могут быть?
Вот код Game.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "SFML/Graphics.hpp"
#include "Game.h"
#include "Settings.h"
#include "Draw.h"
#include "townhall.h"
 
Game::Game()
{
    Settings* _Settings = new Settings();
    _Settings->game_start = true;
    _Render = new sf::RenderWindow(sf::VideoMode(_Settings->wWidh, _Settings->wHeight), _Settings->GameName);
}
 
void Game::Start()
{
    Settings* _Settings = new Settings();
    townhall* _townhall = new townhall();
    while (_Settings->game_start)
    {
        //DeltaTime = GameClock.restart();
 
        //_Render->pollEvent(Event);
        //_Input ->ProcessInput(&Event);
 
        Game::_Render->clear();
        const std::string tex;
        _townhall->SetTexture(tex);
        _townhall->Update(_Render);
        //_Draw->Update(Game::_Render);
        Game::_Render->display();
    }
}
Вот Game.h
C++
1
2
3
4
5
6
7
8
9
10
#define _GAME_H
#include "SFML/Graphics.hpp"
 
class Game
{
public:
    Game();
    sf::RenderWindow* _Render;
    void Start();
};
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.08.2015, 12:28
Ответы с готовыми решениями:

Почему отображается содержимое тега <title>?
Почему отображается содержимое тега &lt;title&gt; непосредственно в браузере? Вот ссылка документа - http://ffghdgrfhdfg.vov.ru

Работа с бэкграундом в окне SFML
Разрабатываю проект на С++ с библиотекой SFML и возник такой вопрос: как сделать масштабируемое изображение в рабочем окне. У меня...

Привязка положение в окне SFML
Есть текст, его положение задано, но ни к чему не привязано. При движении объекта с камерой вида, текст например уходит за окно. Может...

14
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.08.2015, 12:38
Залейте на форум архив с проектом целиком, посмотрю.
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
09.08.2015, 13:14  [ТС]
<внешняя ссылка удалена>
Game_Strategy.rar
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.08.2015, 13:34
C++
1
2
3
4
5
6
7
    Settings* _Settings = new Settings();
    //...
    while (_Settings->game_start) //в _Settings->game_start будет ноль лежать, Вы же его только создали
{
        const std::string tex;//пустая строка
        _townhall->SetTexture(tex);//передаем её сюды
}
C++
1
2
3
4
5
6
7
8
9
10
11
void Draw::SetTexture(const std::string Tex)
{
    Settings* _Settings; //указатель? Ок, на что от указывает?
    std::string file = _Settings->ResPath + Tex;//А тут уже к нему обращаетесь
 
    if (!texture.loadFromFile(file)); //Загружаем текстуру из файла, лежащего черт знает где, ибо _Settings->ResPath черт знает что выдаст и Tex пустой передали
        //Пустой блок зачем? Нафига тогда вообще всё условие? 
texture.setSmooth(true); //А если не загрузилось?
    
    sprite.setTexture(texture);//Даже если не загрузилось это тоже выполнится, что тоже крайне не хорошо.
}
C++
1
2
3
4
5
6
7
8
9
10
class Draw
{
    sf::Texture texture;
    sf:: Sprite sprite;
public: 
    void Update(sf::RenderWindow* aWindow);
    void SetTexture(const std::string Tex);
    void SetRotation(float Rot);
    void SetPosition(sf::Vector2f Loc);
};
Нафига SetRotation и SetPosition? Просто наследуйтесь от sf::Transformable

В коде утечки памяти, куча багов, ошибок. Такое ощущение, что автор не понимает что делат, уж извините, но тут ошибка - сама программа.
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
09.08.2015, 14:41  [ТС]
Спасибо,за ваш ответ.
У меня остался только вопрос.
Что нужно делать что бы избегать всех этих утечек памяти, багов и ошибок? Ну то есть я ни в одной книге не видел как правильно программировать, ну или что то вроде такого. Не видел примеров каких нибудь.
Везде и в книгах и в видео какие то базовые знания и всё...
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
09.08.2015, 15:52
Цитата Сообщение от Armando111 Посмотреть сообщение
Ну то есть я ни в одной книге не видел как правильно программировать
Таких книг много:
1) Скотт Мейерс, - Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ
2) Скотт Мейерс, - Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов
3) Герб Саттер, Андрей Александреску, - Стандарты программирования на С++
4) Стефан К. Дьюхэрст, - Скользкие места С++. Как избежать проблемы при проектировании и компиляции ваших программ
5) Герб Саттер, - Решение сложных задач на С++
6) Герб Саттер, - Новые сложные задачи на C++
7) Мэтью Уилсон, - C++. Практический подход к решению проблем программирования
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
09.08.2015, 15:55  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Таких книг много:
1) Скотт Мейерс, - Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ
2) Скотт Мейерс, - Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов
3) Герб Саттер, Андрей Александреску, - Стандарты программирования на С++
4) Стефан К. Дьюхэрст, - Скользкие места С++. Как избежать проблемы при проектировании и компиляции ваших программ
5) Герб Саттер, - Решение сложных задач на С++
6) Герб Саттер, - Новые сложные задачи на C++
7) Мэтью Уилсон, - C++. Практический подход к решению проблем программирования
Спасибо, прочитаю.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.08.2015, 15:57
Цитата Сообщение от Armando111 Посмотреть сообщение
Ну то есть я ни в одной книге не видел как правильно программировать
Цитата Сообщение от DrOffset Посмотреть сообщение
Таких книг много
судя по ошибкам, нужно для начала какой-то нормальный учебник для начинающих.
Цитата Сообщение от Armando111 Посмотреть сообщение
Везде и в книгах и в видео какие то базовые знания и всё...
Ну вот Вы в них освойтесь... судя, например, по условию
C++
1
if (!texture.loadFromFile(file));
Вы не понимаете еще этих самых основ.

Цитата Сообщение от Armando111 Посмотреть сообщение
Что нужно делать что бы избегать всех этих утечек памяти, багов и ошибок?
Для начала понимать что делает и что должен делать Ваш код. Все баги всё равно не отловите.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
09.08.2015, 16:08
Цитата Сообщение от Croessmah Посмотреть сообщение
судя по ошибкам, нужно для начала какой-то нормальный учебник для начинающих.
Естественно. Начать лучше с Праты (он полегче) или с Липпмана (он посерьезнее).
Стивен Прата, - Язык программирования C++. Лекции и упражнения
Стенли Б. Липпман, - Язык программирования C++. Базовый курс

Книги из списка выше идут довеском. Первой найти посоветую книгу под номером три (3).
1
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
09.08.2015, 23:22  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну вот Вы в них освойтесь... судя, например, по условию
C++
1
if (!texture.loadFromFile(file));
Мда, вот это вот не мой код, я если честно скопировал это... сразу даже не заметил, что там "!".
все ошибки в коде я уже убрал, всё работает. Спасибо за помощь. Книги почитаю.

Добавлено через 2 минуты
В этом участке кода было вот так:
C++
1
if (!texture.loadFromFile(file)) std::cout << "Файл не загружен";
Я убрал cout. И забыл переделать условие
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.08.2015, 23:36
Цитата Сообщение от Armando111 Посмотреть сообщение
все ошибки в коде я уже убрал, всё работает.
Утечку в конструкторе Game убрали?
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
09.08.2015, 23:49  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Утечку в конструкторе Game убрали?
Хмм...вроде нет, а что там?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.08.2015, 23:54
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Settings* _Settings = new Settings(); 
    /*
    - Память выделял?  
    - Выделял
   */
    _Settings->game_start = true;
    _Render = new sf::RenderWindow(sf::VideoMode(_Settings->wWidh, _Settings->wHeight), _Settings->GameName);
   /*
   - Ты её использовал?
   - Использовал
   - Память больше не нужна?
   - Не нужна
   - Кто память освобождать будет?
   - Какую память? o_0
   */
2
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
09.08.2015, 23:58  [ТС]
C++
1
2
3
4
5
6
Game::Game()
{
    Settings* _Settings = new Settings();
    _Render = new sf::RenderWindow(sf::VideoMode(_Settings->wWidh, _Settings->wHeight), _Settings->GameName);
    delete _Settings;
}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
10.08.2015, 00:07
Armando111, а теперь смотрите что получается, Вы везде заново выделяете память под Settings, см. еще, например, Game::Start:
C++
1
2
3
void Game::Start()
{
    Settings* _Settings = new Settings();
Теперь, если мы вдруг в конструкторе зададим другие настройки, то придется и в Game::Start их менять, и сколько у Вас таких мест? Предлагаю, _Settings сделать членом класса Game, тогда в конструкторе выделяем память, в деструкторе - освобождаем (конструтор копий и оператор присваивания закрыть в приват и оставить без реализации, или использовать = delete).
Тогда в Game::Start ничего не нужно будет выделять, только флаг начала игры выставить в true
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2015, 00:07
Помогаю со студенческими работами здесь

[SFML] Не отображается персонаж
Добрый день, киберчане! Такой вопрос...я занялся SFML, и когда я писал код получилась така ошибка! Я создаю персонажа,...

Почему изображение в окне Scene и в окне Game сильно отличается?
Почему изображение в окне Scene и в окне Game сильно отличается?

Вывод значения переменной в графическом окне (sfml)
Добрый день! Вопрос такой: требуется вывести значение переменной в графическом окне... text.setString() принимает только строку, а...

Считать число и записать его в переменную в окне sfml
Как считать число и записать его в переменную в окне sfml?

Не отображается список в окне
Пишу программу по гайду. Согласно гайду должен выйти список студентов в два столбца: ФИО и Оценка. Но ничего не появляется.Никаких ошибок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru