1

是否可以在 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?如何?

4

0 回答 0