Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

1

25.04.2012, 19:01

sfml - Bild wird nicht angezeigt

Hallo,
Ich habe eben ein recht einfaches Programm mit sfml 2.0 geschrieben und wollte mal ein normales Bild ausgeben. Leider kommt folgender Fehler vom Compiler:

Quellcode

1
2
3
4
5
6
1>------ Erstellen gestartet: Projekt: sfml_project_01, Konfiguration: Debug Win32 ------
1>  main.cpp
1>c:\users\luca\documents\visual studio 2010\projects\sfml_project_01\sfml_project_01\main.cpp(54): error C2664: 'void sf::RenderTarget::draw(const sf::Drawable &,const sf::RenderStates &)': Konvertierung des Parameters 1 von 'sf::Texture' in 'const sf::Drawable &' nicht möglich
1>          Ursache: Konvertierung von 'sf::Texture' in 'const sf::Drawable' nicht möglich
1>          Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Ich kann den Fehler einfach nicht finden. Ich habe die sfml-graphics-d.lib sowie sfml-window-d.lib und sfml-system-d.lib verlinkt. Hier ist der Code:

C-/C++-Quelltext

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Erstes Projekt mit sfml 2.0
// Ein Image bewegen

#include <SFML\Graphics.hpp>
#include <SFML\Window.hpp>
#include <iostream>
#include "player.h"

using namespace std;

int main()
{
    sf::VideoMode VMode(800, 600, 32);
    sf::RenderWindow Window(VMode, "sfml 2.0 - moving image");
    
    sf::Image Image;
    if(!Image.loadFromFile("player.png"))
    {
        cout << endl;
        cout << "Image konnte nicht erfolgreich geladen werden.\n";
        cout << "Bitte ueberpruefen sie den Pfad der Datei!\n";
        cin.get();
        return 1;
    }

    sf::Texture Texture;
    Texture.loadFromImage(Image);

    while(Window.isOpen())
    {
        sf::Event Event;
        while(Window.pollEvent(Event))
        {
            switch(Event.type)
            {
                case sf::Event::Closed:
                    std::cout << "The window was closed." << std::endl;
                    Window.close();
                    break;

                case sf::Event::KeyPressed:
                    if (Event.key.code == sf::Keyboard::F1)
                    {
                        player Player;
                    }
                    break;

                default:
                    break;
            }
        }
    
        Window.clear(sf::Color(255, 255, 255));
        Window.draw(Texture);
        Window.display();
    }

    return 0;
}

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

2

25.04.2012, 19:12

Die Fehlermeldung sagt dir doch eigentlich schon, was nicht passt ;)

Hiermit sollte es klarer werden:

(Link)


Was du nun machen musst damit es funktioniert, musst du schon selbst herausfinden ;)
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

3

25.04.2012, 19:41

Danke für die schnelle Hilfe, aber irgendwie steige ich durch das Diagramm nicht durch, sorry... Mich hat das nur verwundert, weil ich eben das gleiche Prinzip für die Darstellung von Images auch in einem anderen Quellcode genommen hab, nur das es dort funktioniert. Und der Compiler meckert ja auch nur an der draw funktion rum, und eben diese benutze ich auch in anderen Programmen ó_Ó
Gruß,
Lardos

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

4

25.04.2012, 19:49

In dem Diagramm siehst du, dass Texturen nunmal keine Drawables sind. Man sieht allerdings, dass z.B. Sprites welche sind. Jetzt kann man nen schnellen Blick in die Doku werfen, und nachschauen, was denn die Sprite-Klasse alles kann.

Und siehe da, das Problem wäre gelöst :D

Falls es noch nicht "Klick" gemacht hat, versuch mal

C-/C++-Quelltext

1
2
3
4
sf::Texture bar;
/*Bild lade zuweisen etc.*/
sf::Sprite foo;
foo.setTexture(bar);
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

5

25.04.2012, 19:55

Schande über mich!! Ich habe gedacht, dass das in sfml 2.0 anders ist. Dem ist nicht so. Danke trotzdem für die Aufmerksamkeit ;)

Edit: Hab gerade gemerkt worans lag. in sfml 2 muss man nähmlich statt Image, Texture nehmen. Da lag auch mein Fehler.

Werbeanzeige