Mac OSX

给我13年的Mac Book Air换了个nvme硬盘

13年买的港版13寸MBA A1466一直用到21年现在,好在当时略有远见,在标配4G内存的时代选择了定制的8G内存版本,才算勉强支撑了这么多年,但当时的硬盘还是选的128G版本,用到现在已经捉襟见肘,而且随着Mac OSX系统不断更新,感觉系统、软件使用起来速度越来越慢,而且还容易发生卡顿。

其实20年初时考虑过换个10代酷睿的新版Mac Book,但选择困难症纠结配置一直纠结到了年底,结果苹果发布了ARM版的Mac CPU M1,一时间好评不断,号称各种完爆Intel版的Mac,好在当时没入10代Mac Book,但参考当年入初代锐龙时的被坑经验,决定还是先观望下M1,毕竟这个变化不小,很多软件都需要对ARM版Mac系统做出适配。

不过此时我的老MBA已经基本硬盘满到快无法使用了,看了下某宝上256G、512G的MBA原装硬盘,售价比普通m.2硬盘基本上要贵一倍,而且都是拆机二手盘,也不知道会不会有问题。幸运的是,在万能的某宝上发现了这个神器:

Continue reading…

Xcode升级后导致原Qt项目构建失败的问题

原有使用Qt Creator 4.0.2创建的跨平台GUI项目,在近日Xcode升级至8.0后,出现了构建失败的问题,错误信息如下:

clang: warning: no such sysroot directory: ‘/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk’
In file included from ../FbxVertexMerger/main.cpp:1:
In file included from ../FbxVertexMerger/mainwindow.h:4:
In file included from ../../../../Qt5.7.0/5.7/clang_64/lib/QtWidgets.framework/Headers/QMainWindow:1:
In file included from ../../../../Qt5.7.0/5.7/clang_64/lib/QtWidgets.framework/Headers/qmainwindow.h:43:
In file included from /Users/wzkres/Qt5.7.0/5.7/clang_64/lib/QtWidgets.framework/Headers/qwidget.h:43:
In file included from /Users/wzkres/Qt5.7.0/5.7/clang_64/lib/QtGui.framework/Headers/qwindowdefs.h:43:
In file included from /Users/wzkres/Qt5.7.0/5.7/clang_64/lib/QtCore.framework/Headers/qglobal.h:81:
/Users/wzkres/Qt5.7.0/5.7/clang_64/lib/QtCore.framework/Headers/qsystemdetection.h:95:12: fatal error: ‘TargetConditionals.h’ file not found
# include <TargetConditionals.h>

显然,问题出在MacOSX10.11.sdk这个位置,升级后的MacOSX SDK变为了MacOSX10.12.sdk,那么如何让Qt使用新版本的SDK呢?很简单,修改Qt项目的.pro文件,加入 Continue reading…

Mac NSOpenGLView NSOpenGLProfileVersion3_2Core glGetString取GL_EXTENSIONS时返回null

实验NSOpenGLViewNSOpenGLProfileVersion3_2Core时发现通过glGetStringGL_EXTENSIONS时一直返回null,不管是放在prepareOpenGL里还是awakeFromNib里,甚至是drawRect:里都不行。尝试调整NSOpenGLView的layer host或layer backed模式结果也都一样。后来查文档发现说3.0+的profile对glGetStringGL_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。

在Mac OSX下编译用于iOS的FreeType静态库

记得上学的时候自己研究DirectDraw的文字绘制时,曾经用过FreeType开源库做过一些简单的TTF字库文字绘制操作,那时没什么强力CPU、GPU,而且又是用的DirectDraw,Alpha混合这种操作都是CPU计算,量稍微大一些的时候FPS是相当的不尽人意,就算做了MMX、SSE等的SIMD优化,感觉也不是很理想,而FreeType画文字没有半透明的抗锯齿的话效果也不是很好,所以当时就留下个印象:FreeType的确是非常强力的文字绘图解决方案。现在在像iOS、Android等移动设备的硬件都已经相当强大了(相对而言),所以我又忍不住想要继续一下当年的小研究了!

首先,先做好准备工作。因为是在Mac下编译,所以Xcode是必不可少的,这里需要注意一点,最近的某个版本(好像是4.3)开始Xcode被变成了独立app的形式发布,而这个默认是不带command line tools,而我们要做的FreeType编译是需要用到make等命令行工具的,所以进入Preferences->Downloads里把它下载下来吧,相对1.6G的Xcode来说,180M的命令行工具应该没什么痛苦。

Continue reading…