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