美文网首页
3种渲染模式——OpenGL新语(一)

3种渲染模式——OpenGL新语(一)

作者: 卜是 | 来源:发表于2020-08-05 16:19 被阅读0次

熟悉opengl的朋友们,都很清楚opengl编程的大致流程:

1、系统及窗口初始化

2、顶点及其属性数据的准备

3、编译和加载着色器程序

4、绑定或映射数据

5、绘制相关图元

从以上流程可看出,关键在于对顶点数据的处理和渲染。这里提供3种对顶点数据处理的算法思路,相应的得到3种渲染模式。

  1. 立即渲染模式
    这种算法先将所有点计算出来,再存储到一个数组中,最后通过一个函数调用显示所有点。这种模式适用于对交互式性能要求高的图形程序,但再次绘制这些点时,就需要重新计算才能显示,伪代码如下:

init_system_window();

p= init_point()

for(some_number_of_points) {

q = gerate_a_point(p)

display_the_point(q)

p = q

}

cleanup()

  1. 延迟渲染模式
    这种算法将数据存储在数据结构中,不用重新计算就可再次显示这些数据,但若数据总是发生变化——比如制作一个动画,则需要将显示的点反复从CPU发送至GPU,将导致性能瓶颈,伪代码如下:

init_system_window();

p= init_point()

for(number_of_points) {

q = gerate_a_point(p)

store_the_point(q)

p = q

}

display_all_points()

cleanup()

  1. 现代渲染模式
    将生成数据发送并存储至GPU,然后在GPU中显示这些已存储的数据,从而使重新显示这些数据避免额外的数据传输开销,当对象移动时,只需调用一个函数来修改空间位置数据。伪代码如下:

init_system_window();

p= init_point()

for(number_of_points) {

q = gerate_a_point(p)

store_the_point(q)

p = q

}

send_all_points_to_GPU()

display_data_on_GPU()

cleanup()

相关文章

网友评论

      本文标题:3种渲染模式——OpenGL新语(一)

      本文链接:https://www.haomeiwen.com/subject/jotorktx.html