WebGL第二章——图形学编程

立即绘制模式和延迟绘制模式:
在Sierpinski镂垫例子中

立即绘制模式即没生成一个点都发送到图形处理单元,生成一个显示一个。
for(some_number_od_points){
q=generate_a_point(p);
display_the_point(q);
p=q;
}
延迟绘制模式先吧所有的点计算出来,再存储在一个数据结构中,之后通过调用一个函数显示所有的点。
for(some_number_od_points){
q=generate_a_point(p);
store_the_point(q);
p=q;
}
display_all_points();

比较:立即对性能要求很高,目前主流;延迟减少时间开销,增加了空间开销,对于数据量非常大的,显示处理可能会成为一个瓶颈。

第三个算法:

for(some_number_od_points){
q=generate_a_point(p);
store_the_point(q);
p=q;
}
send_all_points_to_GPU();
display_data_on_GPU();

在采用动画形式的显示这些数据,只需一次的数据传输开销,之后只要调用一个简单的函数就可以修改对象移动后的空间位置数据。
(最终采用)


为了编写Sierpinski镂垫这样的图形,引出两个问题:

  • 怎样表示空间中的点?

  • 应该使用二维、三维还是其他维度表示?

解决:采用三维,把二维看作是三维的特殊情形。p=(X,Y,Z) Z=0;
在位于Z=0的平面上的三角形的三个顶点生成了5000个点(代码略,不懂):

posted @ 2016-09-18 21:32  PI_M  阅读(604)  评论(0编辑  收藏  举报