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

1

23.06.2012, 12:26

OpenGL - VertexArray

Hallo liebes Forum :),

immer wenn ich ein VertexArray in OpenGL erstelle stürzt das Programm ab. Der Debugger meldet: "Signal received: SIGSEGV (Segmentation fault)".

Der Code:

C-/C++-Quelltext

1
2
3
    GLuint VertexArrayID;  
    glGenVertexArrays(1, &VertexArrayID); 
glBindVertexArray(VertexArrayID);


Es stürtzt immer bei der 2. Zeile ab. Ich hoffe jemand kann mir helfen.

Mfg
Delop

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

23.06.2012, 14:00

Hast du OpenGL an der Stelle richtig initialisiert? Woher kommt die Funktion glGenVertexArrays()?

3

23.06.2012, 14:05

Hast du OpenGL an der Stelle richtig initialisiert?
Ich denke das GLFW schon OpenGL initialisiert...

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
    if(!glfwInit()) {
        fprintf(stderr, "Failed to initialize GLFW\n");
        return -1;
    }
    
    glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
    glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
    if(!glfwOpenWindow(1024, 768, 0,0,0,0, 32,0, GLFW_WINDOW)) {
        fprintf(stderr, "Failed to open GLFW window\n");
        glfwTerminate();
        return -1;
    }
    
    if(glewInit() != GLEW_OK) {
        fprintf(stderr, "Failed to initialize GLEW\n");
        return -1;
    }
    glfwSetWindowTitle("Matrices");
    glfwEnable(GLFW_STICKY_KEYS);
    glClearColor(0.f, 0.f, 0.3f, 0.f);
    
    GLuint VertexArrayID;
    glGenVertexArrays(1, &VertexArrayID);
    glBindVertexArray(VertexArrayID);


Woher kommt die Funktion glGenVertexArrays()?
Was meinst du damit?

PS: Ich kriege nach glewInit() den OpenGL Fehler 1280. Ich kann mir das nicht erklären...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

23.06.2012, 14:09

Schau mal ob glGenVertexArrays vielleicht ein Nullpointer ist...

5

23.06.2012, 14:15

glGenVertexArrays ist doch eine void Funktion. Ich verstehe nicht, wie es ein Null Pointer sein kann...

6

23.06.2012, 14:32

Ja, es geht :thumbsup: .

Einfach das vor glewInit() schreiben:

C-/C++-Quelltext

1
glewExperimental = GL_TRUE;
Danke dot, dass du es versucht hast. :)

Mfg
Delop

Edit: Ok...obwohl es geht, kriege ich den Fehler 1280. Hat jemand eine Idee?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

23.06.2012, 15:55

Und wo bekommst du den Fehler? 1280 ist iirc ein INVALID_CALL...

8

23.06.2012, 15:58

Nach glGenVertexArrays.

9

23.06.2012, 20:43

glew überschreibt die Funktionsaufrufe mit Makros die Funktionszeiger benutzen um die passende Funktion aufzurufen. Beim initialisieren werden diese gesetzt, je nach Treiber sind aber nicht alle verfügbar, das bleiben dann Null(Funktions-)Pointer und jeder Aufruf lässt dein Programm abstürzen.
Lieber dumm fragen, als dumm bleiben!

10

23.06.2012, 20:48

Also es stürzt nicht mehr ab es funktioniert auch so wie es sein sollte, aber direkt nach glewInit() bekomme ich den Fehler 1280. Sorry das ich gesagt habe nach glGenVertexArrays.

Werbeanzeige