博客
关于我
OpenGL 中“立即模式”是什么意思?
阅读量:792 次
发布时间:2023-02-23

本文共 1550 字,大约阅读时间需要 5 分钟。

渲染模式对比:老式即时模式与现代保留模式

一、渲染模式的演变

 本文将对老式渲染模式中的“立即模式”与现代渲染模式的“保留模式”进行对比分析,揭示两种模式的不同特点及其适用场景。

二、立即模式的淘汰原因

 “立即模式”是OpenGL中的一个早期功能,常见于顶点数组和顶点缓冲区的使用场景。然而,由于其性能瓶颈和不便性,逐渐被现代保留模式取代。

2.1 即时模式的特点

 立即模式通过glBegin和glEnd标记顶点数据的执行流程,适用于顶点数组(如glDrawArrays)和顶点缓冲区对象之外的场景。

 其主要优点在于代码简洁,但在性能和灵活性方面显著不足。

2.2 为什么选择保留模式

 保留模式通过顶点缓冲区对象(VBO)和着色器程序实现数据传递,提供了更高的灵活性和性能。其主要优点包括支持更复杂的着色器效果和减少CPU负担。

 然而,保留模式需要通过顶点缓冲区对象和相关API来实现,增加了开发的复杂性。

三、代码示例对比

 以下是两种渲染模式的代码示例:

立即模式示例:
glBegin(GL_TRIANGLES);

glVertex3f(1.0, 1.0, 0.0);glVertex3f(-1.0, 1.0, 0.0);glVertex3f(0.0, -1.0, 0.0);glEnd();

保留模式示例:
// 创建顶点缓冲区对象GLuint vbo;glGenBuffers(1, &vbo);glBindBuffer(GL_ARRAY_BUFFER, vbo); // 添加顶点数据float vertices[] = {1.0, 1.0, -1.0, 1.0, 0.0, -1.0};glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); // 发送顶点数据到着色器GLuint program = glCreateShaderProgram();glAttachShader(program, glCreateShader(GL_VERTEX_SHADER, "#version 330\n uniform vec3 pos; void main() { gl_Position = pos; }"));glLinkProgram(program); glUseProgram(program);glVertexAttribPointer(0, 3, GL_FALSE, 0, 0, 0);glDrawArrays(GL_TRIANGLES, 0, 3);

四、性能对比分析

 立即模式的性能瓶颈主要体现在对程序流程的依赖,而保留模式通过缓冲区和着色器程序实现了数据的离线处理,显著提升了性能表现。

 在复杂场景中,保留模式能够更高效地管理顶点数据和着色器程序,减少了CPU的负担。

五、总结与建议

 在现代渲染开发中,选择保留模式是更优的选择。对于需要灵活性和高性能的应用场景,熟练掌握保留模式的实现方法至关重要。

 建议开发者在项目初期明确渲染需求,根据具体场景选择合适的渲染模式。

转载地址:http://bzpfk.baihongyu.com/

你可能感兴趣的文章
opencv中读写视频
查看>>
OpenCV中遇到Microsoft C++ 异常 cv::Exception
查看>>
opencv之cv2.findContours和drawContours(python)
查看>>
opencv之namedWindow,imshow出现两个窗口
查看>>
opencv之模糊处理
查看>>
Opencv介绍及opencv3.0在 vs2010上的配置
查看>>
OpenCV使用霍夫变换检测图像中的形状
查看>>
opencv保存图片路径包含中文乱码解决方案
查看>>
OpenCV保证输入图像为三通道
查看>>
OpenCV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
opencv图像分割2-GMM
查看>>
opencv图像分割3-分水岭方法
查看>>
opencv图像切割1-KMeans方法
查看>>
OpenCV图像处理篇之阈值操作函数
查看>>
opencv图像特征融合-seamlessClone
查看>>
OpenCV图像的深浅拷贝
查看>>
OpenCV在Google Colboratory中不起作用
查看>>
OpenCV学习(13) 细化算法(1)(转)
查看>>
OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
查看>>
OpenCV学堂 | CV开发者必须懂的9种距离度量方法,内含欧氏距离、切比雪夫距离等(建议收藏)
查看>>