Du musst unbedingt auf OpenGL-Fehler prüfen.
Dann gab es noch einen Konflikt mit dem CoreProfile-Header. Wenn Du dieses verwendest, darfst Du OpenGL.h nicht includen, sondern gl3.h. Leider erfolgt das im precompiled-header in der Voreinstellen (in Cocoa/Cocoa.h <- daran erkennt man, dass modernes OpenGL keine Priorität bei Apple hat), hier die korrigierte .pch Datei sowie ein Makro, welches auf OpenGL-Fehler prüft (selbstverständlich gehört das nicht in den precompiled header sondern in einen separaten Header, welcher in allen OpenGL verwendenden Modulen inkludiert wird).
Alles anzeigen
glGenVertexArraysApple brauchst Du nicht zu verwenden, nimm direkt glGenVertexArrays, das funktioniert seit mindestens 10.6.3.
Im Anhang noch das korrigierte Beispielprojekt.
Beste Grüße, Markus
Dann gab es noch einen Konflikt mit dem CoreProfile-Header. Wenn Du dieses verwendest, darfst Du OpenGL.h nicht includen, sondern gl3.h. Leider erfolgt das im precompiled-header in der Voreinstellen (in Cocoa/Cocoa.h <- daran erkennt man, dass modernes OpenGL keine Priorität bei Apple hat), hier die korrigierte .pch Datei sowie ein Makro, welches auf OpenGL-Fehler prüft (selbstverständlich gehört das nicht in den precompiled header sondern in einen separaten Header, welcher in allen OpenGL verwendenden Modulen inkludiert wird).
Quellcode
- #ifdef __OBJC__
- #import <OpenGL/gl3.h>
- #import <Cocoa/Cocoa.h>
- #endif
- static NSString* ReportGLError( GLuint error )
- {
- switch ( error ) {
- case GL_INVALID_ENUM:
- return @"Invalid enum";
- break;
- case GL_INVALID_VALUE:
- return @"Invalid value";
- break;
- case GL_INVALID_OPERATION:
- return @"Invalid operation";
- break;
- case GL_OUT_OF_MEMORY:
- return @"Out of memory";
- break;
- case GL_NO_ERROR:
- return @"No error";
- break;
- case GL_INVALID_FRAMEBUFFER_OPERATION:
- return @"Invalid framebuffer operation";
- break;
- default:
- return @"Unknown error";
- break;
- }
- }
- #define CHECK_FOR_GLERRORS { GLuint error; while ( ( error = glGetError() ) != GL_NO_ERROR ) { \
- NSAssert( error == GL_NO_ERROR, @"OpenGL Error: %@", ReportGLError(error) ); \
- } \
- }
glGenVertexArraysApple brauchst Du nicht zu verwenden, nimm direkt glGenVertexArrays, das funktioniert seit mindestens 10.6.3.
Im Anhang noch das korrigierte Beispielprojekt.
Beste Grüße, Markus
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Markus Müller ()