/ / GL_PRIMITIVE_RESTART w OSX 10.8 - macos, opengl, glut

GL_PRIMITIVE_RESTART na OSX 10.8 - macos, opengl, glut

używam OpenGL 3.2 i GLUT na OSX, i kompiluję w wierszu poleceń w następujący sposób:

gcc test.c -framework OpenGL -framework GLUT

u góry mojego pliku źródłowego ręcznie dołączam dwa nagłówki:

#include <OpenGL/OpenGL.h>
#include <GLUT/GLUT.h>

jak dotąd wszystko było w porządku i eleganckie. ale dzisiaj zauważyłem, że użycie GL_PRIMITIVE_RESTART daje mi niezadeklarowany błąd identyfikatora ...

czy są inne nagłówki, które muszę dołączyć, czy też inne frameworki? czy też Apple po prostu nie obsługuje GL_PRIMITIVE_RESTART w implementacji OpenGL 3.2?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie dołączasz bezpośrednio żadnego z nagłówków OpenGL. <OpenGL/OpenGL.h> może brzmieć jak nagłówek OpenGL, ale tak naprawdę zawiera definicje CGL.

Otrzymujesz pośrednio nagłówek OpenGL, ponieważ <GLUT/GLUT.h> obejmuje <OpenGL/gl.h>. Niestety jest to plik nagłówkowy wcześniejszy niż GL3, dlatego nie masz definicji poziomu GL3.

Żądany nagłówek to <OpenGL/gl3.h>. Możesz dołączyć go sam, ale najprawdopodobniej zobaczysz pewne ostrzeżenia, ponieważ <GLUT/glut.h> nadal będzie zawierał stary nagłówek i wskaże możliwe konflikty. Najlepsze, co znalazłem, to użycie sekwencji włączania takiej jak ta:

#include <OpenGL/gl3.h>
#define __gl_h_
#include <GLUT/glut.h>

The #define odpowiada osłonie nagłówka w <OpenGL/gl.h>i zapobiega włączeniu go.

Apple wycofuje GLUT. Musisz wyłączyć dodatkowe ostrzeżenia w OS X 10.9, aby nie narzekać na używanie GLUT. Nie obsługuje także tworzenia nowszych kontekstów niż GL 3.2.