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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

41

06.07.2012, 23:01

Die gl3wInit()-Funktion liefert eine -1, was nicht gut aussieht.

Das Problem ist vermutlich, dass du keinen OpenGL 3.3 Context hast. Ich weiß nicht, ob GLUT (bzw. freeglut) sich überhaupt dazu bewegen lässt, einen entsprechenden Context zu erzeugen. Leider gibt es generell keine wirklich gute entsprechende Library. Du könntest auf GLFW umsteigen, damit geht zumindest das...

Ich möchte Glew sowieso nur wenn wirklich nötig benutzen.

Naja, du musst weder GLUT noch GLEW noch irgendwas benutzen. Du kannst dein Fenster und deinen Context natürlich komplett selbst erzeugen und die Extensions laden. Geht natürlich alles per WinAPI. Diese Libraries tun eben einfach nur genau das...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (06.07.2012, 23:10)


42

06.07.2012, 23:29

Dessen bin ich mir bewusst, beim ersten post, der Syntax des Fensters ist nur nicht dabei, habe ich das Fenster erstellt und dann mit OpenGL verknüpft.
Mit GLFW selbst gabs derbe Probleme im Sinne von Compilerfehlern in dem Teil selbst. Bin damit also gar nicht zum benutzen gekommen.
Was kann ich tun? Soll ich davon jetzt einfach die Fehlern posten und das Problem gemeinsam mit euch angehen?
Btw: Hab ich zu Beginn nicht den Kontext selbst hergestellt? Also bei oglSetup, Syntax auf der Dritten Seite, wenn ich mich nicht irre.
Mit dem PIXELFORMATDESCRIPTOR und so, nicht?
MfG
Check

43

06.07.2012, 23:33

Du hast den Kontext selbst erzeugt, aber die Extensions hast du nicht manuell geladen (durch glew).

MfG
Delop

44

07.07.2012, 00:03

Ja, ich schrieb ja auch nur vom Kontext.
Nach Dots Vermutung liegt/lag es doch am Kontext.
Also muss ich mich doch mal mit GLFW herumschlagen?

MfG
Check

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

45

07.07.2012, 01:14

Zeig uns doch mal den Code, wie er jetzt wirklich aussieht. Ich bin etwas verwirrt von der Tatsache, dass du in dem, was du bisher hier gepostet hast, GLUT verwendest, nun aber meinst, dass du Fenster und Context selbst erzeugst...

46

07.07.2012, 01:20

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void OpenGL_Init::oglSetup()
{
    glewInit(); // Initialisierung

    memset(&pfd, 0, sizeof(pfd));
    pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
    pfd.nVersion = 1;
    pfd.dwFlags = PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER;
    pfd.iPixelType = PFD_TYPE_RGBA;
    pfd.cColorBits = 32;
    pfd.cDepthBits = 32;
    pfd.cAlphaBits = 8;

    hDC = GetDC(hWnd);
    iFormat = ChoosePixelFormat(hDC, &pfd);
    SetPixelFormat(hDC, iFormat, &pfd);

    hRC = wglCreateContext(hDC);
    wglMakeCurrent(hDC, hRC);
}


Das ist der alte Code, den ich ganz am Anfang hier im Thread verwendet hatte. nach euren Ratschlägen etc.pp. bin ich jetzt hier: (die Probleme mit glew.h lagen an der Einbindreihenfolge, es gab sie nämlich auch mit gl3w.h und ab da wurde ich, was die Inkludierungsreihenfolge betrifft, stutzig)

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
#include <GL3\gl3.h>
#include <GL3\gl3w.h>
#include <GL\glfw.h>

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

    glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
    glfwOpenWindowHint(GLFW_VERSION_MAJOR, 3);
    glfwOpenWindowHint(GLFW_VERSION_MINOR, 1);
    glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //Use the best OpenGL

    if(!glfwOpenWindow(640, 480, 0, 0, 0, 0, 32, 0, GLFW_WINDOW))
    {
        glfwTerminate();    //Er geht hier in die
        return -1;              //Bedingung rein... glfwOpenWindow wirft den Wert '0' zurück.
    }
    if(gl3wInit()!=0)
        return -1;

    glfwSetWindowTitle("OpenGL");
    glClearColor(0.f, 0.f, .3f, 0.f);

    glfwEnable(GLFW_STICKY_KEYS);

    while(glfwGetKey(GLFW_KEY_ESC) != GLFW_PRESS && glfwGetWindowParam(GLFW_OPENED))
    {
        glfwSwapBuffers();
    }
}

Der Code wirft mich nur leider beim Öffnen des Fensters raus. Stelle ist entsprechend kommentiert.

MfG
Check

47

07.07.2012, 09:13

Versuch mal deinen Grafkatreiber upzudaten. Vielleicht hilft dir das.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

48

07.07.2012, 10:03

Soweit ich gelesen habe unterstützen Grafikkarten in der Regel nur bis 24 Bit Depthbuffer (+8 Stencil). Die angegebenen 32 bei glfwOpenWindow könnten daher für den Fehler sorgen.

49

07.07.2012, 10:16

Das mit den 32 Bit stimmt schon.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

50

07.07.2012, 10:26

Moderne GPUs unterstützen sogar 32 Bit Float Depth Buffer ;)
Ich würd auch mal den Grafiktreiber updaten. Ist überhaupt ein richtiger Treiber installiert?

Werbeanzeige