实验NSOpenGLView和NSOpenGLProfileVersion3_2Core时发现通过glGetString取GL_EXTENSIONS时一直返回null,不管是放在prepareOpenGL里还是awakeFromNib里,甚至是drawRect:里都不行。尝试调整NSOpenGLView的layer host或layer backed模式结果也都一样。后来查文档发现说3.0+的profile对glGetString传GL_EXTENSIONS已经被deprecated,属于invalid enumeration,正确的方法是用glGetStringi代替:
GLint n, i; glGetIntegerv(GL_NUM_EXTENSIONS, &n); for (i = 0; i < n; i++) { printf("%s\n", glGetStringi(GL_EXTENSIONS, i); }
另外NVidia Cg的cgGLGetLatestProfile也一直返回Unknown,怀疑和这个性质类似……
UPDATE1:换回NSOpenGLProfileVersionLegacy后,cg问题解决,看来现在的cg sdk还不支持3.0+的profile。
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。