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

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

1

24.08.2014, 01:14

[Gelöst] glfw richtig erstellen / konigurieren

Erst mal sorry, die Frage gabs schon öfters, aber ich weis nicht was ich falsch mache ?(
Ich habe wie im offiziellen Tutorial beschrieben, cmake benutzt, um mir ein VS Projekt zu generieren. In VS habe ich denn all build erstellt, und danach die Dateien Debug/glfw3.lib und Release/glfw3.lib gefunden. Diese dann als Lib-verweis in mein eigenes Projekt hinzugefügt und die glfw3.h inkludiert. Was genau muss ich machen, damit diese automatisch den rest (window etc.) inkludiert? Im Beispiel war die datei glwf3.h ausreichend, bei mir jedoch nicht, sie deklariert, definiert aber nichts (auch nicht die Klassen).

MfG,
RmbRT
P.S.: Mein Schreibfluss ist gerade nicht der beste, bin etwas zu müde :sleeping:
Edit: oder benötige ich gar keinen zugriff auf die Strukturen, es werden ja eigentlich nur Pointer benutzt ?
Edit2:
So hab jetzt das ganze etwas verändert und es läuft. Ich finde es trotzdem komisch, dass ich nie die member von den Klassen zu gesicht bekomme. Ist das nicht schlechter Stil?
"Dumm ist, wer dummes tut."

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »RmbRT« (24.08.2014, 15:17)


RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

2

24.08.2014, 02:36

Ich will keinen neuen Thread extra dafür aufmachen, also frag ich es hier: laut Dokumentation gibt glfwGetTime() die Zeit in sekunden zurück. Bei mir ist die Zeit aber um einiges kleiner(ca. 500-2000 mal). Ist das ein Fehler an meiner Hardware? ?(
MfG,
RmbRT
"Dumm ist, wer dummes tut."

3

24.08.2014, 02:52

Vermutlich gibt diese Funktion die Zeit seit dem systemstart zurück.

4

24.08.2014, 02:53

This function returns the value of the GLFW timer. Unless the timer has been set using glfwSetTime, the timer measures time elapsed since GLFW was initialized.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

5

24.08.2014, 12:11

Das war nicht das, was ich meinte. Ich habe das wie im oben verlinkten Beispiel mit einem Timer ein Dreieck gedreht, 360°/s. Es dreht sich aber nur so langsam, dass nach ca. 5s die ersten Pixel sich verändern. Das kann ja eigentlich nicht sein, da es eine ganze Umdrehung pro Sekunde machen sollte...

MfG,
RmbRT
"Dumm ist, wer dummes tut."

Tobiking

1x Rätselkönig

  • Private Nachricht senden

6

24.08.2014, 12:27

Ich würde eher darauf tippen das deine Berechnung falsch ist. Du könntest dir mal die Zeiten ausgeben lassen um zu sehen ob sie richtig sind, und ob sie in der Form sind, wie du sie erwartet hast.

Ansonsten kannst du auch einfach mal deinen Rotationscode posten und wir schauen mal drüber.

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

7

24.08.2014, 12:53

0.0000003001454449841196s dauert bei mir ein frame. es sollte wohl etwas länger dauern :)
MfG,
RmbRT
"Dumm ist, wer dummes tut."

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

8

24.08.2014, 13:50

Kann es sein, dass es statt Sekunden die Millisekunden als double zurückgibt? Wenn ich mal Tausend rechne, kommt es ungefähr auf eine Umdrehung pro Sekunde.
MfG,
RmbRT
"Dumm ist, wer dummes tut."

9

24.08.2014, 14:27

Hm, also bei ist die Zeit in Sekunden. Jedenfalls gebe ich alle Geschwindigkeiten so an, als ob sie es wäre, und es sieht vernünftig aus. Sicher, dass du die Zeit nicht noch an irgendeiner Stelle multiplizierst? Vielleicht wäre ein bisschen Quellcode nützlich.
Lieber dumm fragen, als dumm bleiben!

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

10

24.08.2014, 14:40

Ich habs mit nem GameState gemacht.
GameState:

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
void TestGS::onUpdate(double time)
{
    if(finished) return;
    if(glfwWindowShouldClose(window))
        finished=true;
    this->time += time;
    for(unsigned int i = -1; i!=0; --i);
    char buf[128];
    memset(buf,0,sizeof(buf));
    sprintf_s(buf,"Programmer is faggot (%.24fs)",(float)time);

    glfwSetWindowTitle(window, buf);
    glfwPollEvents();

}

void TestGS::onPresent()
{
    int width, height;
    glfwMakeContextCurrent(window);

    glfwGetFramebufferSize(window, &width, &height);
    float ratio = width / float(height);

    glViewport(0,0,width,height);
    glClear(GL_COLOR_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();
    glRotatef(float(time*360.0), 0.f, 0.f, 1.f);

    glBegin(GL_TRIANGLES);
    glColor3f(1.f, 0.f, 0.f);
    glVertex3f(-0.6f, -0.4f, 0.f);
    glColor3f(0.f, 1.f, 0.f);
    glVertex3f(0.6f, -0.4f, 0.f);
    glColor3f(0.f, 0.f, 1.f);
    glVertex3f(0.f, 0.6f, 0.f);
    glEnd();
    

    glfwSwapBuffers(window);
}

main:

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
#include "TestGS.hpp"

int main()
{
    if(!glfwInit())
        return -1;

    TestGS &test = *new TestGS();
    double lasttime = glfwGetTime();
    double now, currTime;
    while(!test.isFinished())
    {
        now = glfwGetTime();
        currTime = now-lasttime;
        lasttime = now;

        test.onUpdate(currTime*1000);//lasse ich das *1000 weg, ist es ewig langsam, so ist es bei ca. 1 umdrehung/s
        test.onPresent();
        lasttime = glfwGetTime();
    }
    delete &test;
    glfwTerminate();
    return 0;
}
"Dumm ist, wer dummes tut."

Werbeanzeige