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

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

1

01.07.2013, 21:45

SFML + OpenGL

Nabend

Ich versuche zZ von "nur" SFML auf SFML + OpenGL umzusteigen. Ich würde am liebsten OpenGL in SFML benutzen, da ich dann noch den Sound usw von SFML nutzen kann. Ich habe den Tutorial Code beutzt und er compiled ohne Fehler, allerdings sehe ich nur ein schwazes Fenster.

Hier mal 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
60
61
#include <SFML\Window.hpp>
#include <SFML\OpenGL.hpp>
#include <SFML\Graphics.hpp>

int main()
{
    // create the window
    sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, sf::ContextSettings(32));
    window.setVerticalSyncEnabled(true);

    //OpenGL Set up/////////////////
    // Set color and depth clear value
    glClearDepth(1.f);
    glClearColor(0.f, 0.f, 0.f, 0.f);

    // Enable Z-buffer read and write
    glEnable(GL_DEPTH_TEST);
    glDepthMask(GL_TRUE);

    // Setup a perspective projection
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(90.f, 1.f, 1.f, 500.f);
    ////////////////////////////////////

    // run the main loop
    bool running = true;
    while (running)
    {
        // handle events
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
            {
                // end the program
                running = false;
            }
            else if (event.type == sf::Event::Resized)
            {
                // adjust the viewport when the window is resized
                glViewport(0, 0, event.size.width, event.size.height);
            }
        }
        // clear the buffers
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glBegin(GL_POINT);

        glPointSize(10.f);
        glColor4i(255,0,0,255);
        glVertex2f(50.f,50.f);

        glEnd();

        // end the current frame (internally swaps the front and back buffers)
        window.display();
    }

    return 0;
}


Ich habe leider echt keine Ahnung voran das liegen mag, da ich bisher nicht mit OpenGL gearbeitet habe, ist es bestimmt ein lächerlich kleiner Fehler.

Weiterhin wäre interessant ob jemand vielleicht ein gutes (SFML +) OpenGL tutorial kennt, das auch aktuell ist. Google und Bing verweisen mich meistens auf Sachen von 2009 :D

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

2

01.07.2013, 22:52

Hallo.
Zuerst würde ich dir raten direkt modernes OpenGL (3.0+) zu lernen, da es auf relativ moderner Hardware viel effizienter läuft und tolle Effekte via Shader ermöglicht. Guck dir am besten in den Tutorials/der Dokumentation auf der SFML-Homepage an, wie man einen OpenGL 3.0+-Context erstellt und dann kann ich dir dieses Tutorial für OpenGL 3.3 empfehlen: www.opengl-tutorial.org. Der Autor benutzt zwar GLFW für das Fenster und den OpenGL-Context, aber das sollte kein Problem sein auf SFML umzuschreiben.

Ich hoffe ich konnte helfen :D

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

3

01.07.2013, 22:56

Das Tut hier fand ich auch ziemlich gut. Zum Fehler an sich fällt mir grad' spontan nichts ein.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

4

01.07.2013, 23:05

Oh den Fehler habe ich vergessen ^^
Bei gluPerspective setzt du die nahe Clipping-Ebene auf 1.0.
Den Punkt zeichnest du aber direkt auf 0.0, heißt er wird abgeschnitten.
Guck dir statt gluPerspective lieber glOrtho an, oder befolge meinen Tipp gleich auf 3.0+ umzusteigen :thumbsup:

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

5

01.07.2013, 23:32

Okay, dann werde ich wohl einfach auf 3.0+ umsteigen.

SFML wird wohl damit dann nicht mehr laufen oder?

Es gibt ja unzählige Dinge wie Glut, Gl3w, usw usw leider fange ich ja grade erst an lieber OpenGL zu benutzen und ich habe einfach keine Ahnung welches ich davon benutzen soll? Könntet ihr mir da bitte noch weiterhelfen?

Man kann aber mit OpenGL den grafischen Part machen und mit anderen Librarys (SFML...) dann Sounds, Networking uns machen oder?


EDIT: Fast alles was man über OpenGL findet bezieht sich auf 3D. Ist es so abwegig wenn man etwas in 2D mit OpenGL machen möchte? Derzeit bin ich bei 2D Programmen, sollte ich dafür lieber bei etwas anderem bleiben, ich meine OpenGL bringt selbst dort bestimmt eine besserer performance ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ERROR« (01.07.2013, 23:46)


eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

6

02.07.2013, 02:49

SFML wird wohl damit dann nicht mehr laufen oder?
SFML wird weiterhin wunderbar funktionieren. Die Frage ist jedoch, in wiefern brauchst du SFML noch? Wenn es dann wirklich nur noch um Sound und Context Creation geht, dann musst du dir keine weiteren Sorgen machen, weil du dann das Graphics Modul gar nicht mehr brauchst. ;)

Man kann aber mit OpenGL den grafischen Part machen und mit anderen Librarys (SFML...) dann Sounds, Networking uns machen oder?
Ja genau!

EDIT: Fast alles was man über OpenGL findet bezieht sich auf 3D. Ist es so abwegig wenn man etwas in 2D mit OpenGL machen möchte? Derzeit bin ich bei 2D Programmen, sollte ich dafür lieber bei etwas anderem bleiben, ich meine OpenGL bringt selbst dort bestimmt eine besserer performance ;)
Nein gar nicht, 2D und 3D unterscheiden sich nur durch eine Dimension. Bei 2D kann man einfach die 3. Dimension ignorieren, bzw alles auf die gleiche Ebene setzten oder aber man kann diese 3. Dimension auch für ein 2D Spiel verwenden.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

7

02.07.2013, 11:51

Danke für die weiteren Erklärungen eXpl0it3r.

Hat mittlerweile eigentlich Jemand eine Ahnung warum das Programm nicht funktioniert?

Eine Frage bleibt noch im Raum und zwar welches Hilfsmittel(das genaue Wort weiss ich nicht) benutzen soll. Also ich meine die Dinge wie Glut, Gl3w usw. Mit SFML würde es ja auch gehen, aber die will ich ja vielleicht nicht unbedingt immer benutzen und es klappt ja irgendwie da oben grade nicht :D

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

8

02.07.2013, 13:35

Zitat

Oh den Fehler habe ich vergessen ^^

Bei gluPerspective setzt du die nahe Clipping-Ebene auf 1.0.

Den Punkt zeichnest du aber direkt auf 0.0, heißt er wird abgeschnitten.

Guck dir statt gluPerspective lieber glOrtho an, oder befolge meinen Tipp gleich auf 3.0+ umzusteigen :thumbsup:
Als Zusatz würde ich dir Sachen wie GLM (als Mathematik-Bibliothek für Vektoren, Matrizen, ...), GLEW (wenn du Extensions benutzten willst), Box2D/Bullet Physics (als 2D/3D-Physik-Bibliothek) empfehlen. GLUT, GLFW, etc. brauchst du nicht, weil die eigentlich nur den Context erstellen und Eingaben verarbeiten, was du mit der SFML bereits hast.

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

9

02.07.2013, 13:50

Danke für die Tipps.

Also zumindest vorerst will ich die Physik selber machen.

Allerdings will ich ja zumindest in manchen Projekten nicht mit SFML arbeiten, da bräuchte ich dann ja GLUT oä oder?

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

10

02.07.2013, 14:00

Ja, oder du nutzt die systemspezifische OpenGL-Implementierung, das heißt du machst einen OpenGL-Context direkt über die WinAPI (via WGL) auf Windows, X11 (k. A. wie das da heißt) auf Linux oder Carbon/Cocoa (dito) auf Mac. Wenn du da aber einen OpenGL Context > 1.1 (verbessert mich, wenn ich falsch liege) erstellen willst, musst du vorher alle Funktionen, die zum jeweiligen Context gehören, selbst laden (Extensions). Wenn du den Context so erstellen willst, kannst du dir das ganze Laden ersparen, indem du einfach GLEW benutzt.

PS: Schön auch mal einen aus OWL auf dem Forum zu sehen :thumbsup:

Werbeanzeige