使用带有THREE.Points的自定义顶点着色器

时间:2017-08-01 23:57:34

标签: three.js

我看到Threejs有一个点材料可以将几何绘制为点而不是三角形。但是,我想使用我自己的顶点着色器使用着色器材质来操纵顶点。在WebGL中,我想我可以使用gl.Points而不是gl.Triangles来调用gl_drawArrays。如何告诉渲染器将几何体绘制为点?有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:4)

在提出问题后立即找到我的解决方案。只需使用您想要使用的任何几何体和着色器材质创建一个THREE.Points对象而不是THREE.Mesh。

THREE.Points(几何,新的THREE.ShaderMaterial(参数));

答案 1 :(得分:4)

一点点补充,在我将gl_PointSize添加到我的顶点着色器之前,我没有任何乐趣:

NSData *pdfData = [self createPdfWithPages:pagesArray];
[self performSelectorOnMainThread:@selector(pdfDone:) withObject:pdfData waitUntilDone:YES];

- (NSData *)createPdfWithPages:(NSArray *)pages {


    NSMutableData *pdfData = [NSMutableData data];

    component *firstPage = pages[0];

    UIGraphicsBeginPDFContextToData(pdfData, firstPage.contentView.bounds, nil);

    for (int i = 0; i < pages.count; i++) {
        component *thisPage = pages[i];
        UIGraphicsBeginPDFPageWithInfo(thisPage.contentView.bounds, nil);

        CGContextRef pdfContext = UIGraphicsGetCurrentContext();
        [thisPage.contentView.layer renderInContext:pdfContext];
    }

    UIGraphicsEndPDFContext();

    return pdfData;
}


- (void)pdfDone:(NSData *)data {

    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSURL *baseURL = [NSURL fileURLWithPath:path];
    self.pdfData = data;


    [self.webView loadData:self.pdfData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:baseURL];



}

GPU particle system example中找到答案。