12 月 2012
Mac NSOpenGLView NSOpenGLProfileVersion3_2Core glGetString取GL_EXTENSIONS时返回null
实验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。