是否可以在 quicklook 插件中使用 WebGL?
我按照本教程将相关代码替换GeneratePreviewForURL.m
为
OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options) {
NSString *_content = [NSString stringWithContentsOfURL:(__bridge NSURL *)url encoding:NSUTF8StringEncoding error:nil];
NSString* path = @"/Users/myusername/Downloads/TodoQL/demo.html";
NSError *error = nil;
NSString* _html = [NSString stringWithContentsOfFile:path
encoding:NSUTF8StringEncoding
error:&error];
if(error) { // If error object was instantiated, handle it.
NSLog(@"ERROR while loading from file: %@", error);
}
NSLog(@"\n%@\n",_html);
QLPreviewRequestSetDataRepresentation(preview,(__bridge CFDataRef)[_html dataUsingEncoding:NSUTF8StringEncoding],kUTTypeHTML,NULL);
return noErr;
}
void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview) {
// Implement only if supported
}
对于调试,这被设置为丢弃给出的文件 quicklook 的内容,而只是呈现位于/Users/myusername/Downloads/TodoQL/demo.html
.
我使用这个准系统 WebGL 示例,只稍作改动以显示 gl 上下文没有被加载:
gl = canvas.getContext("experimental-webgl");
if(!gl)
{
document.body.innerHTML = ":-(";
return;
}
确实,运行/usr/bin/qlmanage -p example.example
显示的是失望的脸,而不是 webgl 演示。
在 Safari 中,只要我“启用 WebGL”,这个演示就可以工作。我是否需要以某种方式为 quicklook 插件启用 WebGL?如何?