Я пытаюсь запустить простую программу OpenGL, но я не могу ее отобразить. Я использую Swift на Mac, с которым я не знаком, хотя у меня есть хороший опыт работы с OpenGL на окнах. Программа не работает нормально (без ошибок GL или что-нибудь), но ничего не отображается, пока я не добавить это в конце моей инициализации OPENGL:Vertex Array Objcects - glGenVertexArrays GL_INVALID_OPERATION на OSX
var vao:GLuint=0;checkGlError();
glGenVertexArrays(1, &vao);checkGlError();
glBindVertexArray(vao);checkGlError();
Затем он дает GL_INVALID_OPERATION как только я называю glGenVertexArrays(), однако в документах это не упоминается как опция.
Я опасался, что у меня может не быть контекста GL3 (и действительно, я бы предпочел просто иметь контекст GL1/2, однако в заголовках Swift, похоже, отсутствуют такие вещи, как glBegin() и glColor3f(), поэтому я решил обосноваться на GL3), поэтому я попытался вручную запросить:
required init?(coder: NSCoder) {
super.init(coder: coder);
let attribs=[NSOpenGLPFAOpenGLProfile,NSOpenGLProfileVersion3_2Core,0];
pixelFormat=NSOpenGLPixelFormat(attributes: UnsafePointer<NSOpenGLPixelFormatAttribute>(attribs));
openGLContext=NSOpenGLContext(format: pixelFormat, shareContext: nil);
openGLContext.view=self;
openGLContext.makeCurrentContext();
};
Однако это, похоже, не влияет на вещи вообще.
Кстати, если вам не хватает прототипов для таких вещей, как 'glBegin (...)', вы должны добавить '#include' в свой код. Похоже, что включен только '', а заголовок * that * не включает функции из старого OpenGL. Весь этот бизнес «OpenGL/...» специфичен для Apple, поэтому оберните это чем-то вроде '#ifdef __APPLE__' ...' # endif'. –
@ AndonM.Coleman это Swift не Obj-C, поэтому я не могу использовать #includes – zacaj