Opengl 渲染管线

原文地址:http://www.songho.ca/opengl/gl_pipeline.html

 

Opengl管线有一系列的有序的处理阶段。两个种图形信息被管线中被处理——基于顶点的数据和基于像素的数据,在写入帧缓存的时候结合在一起。注意opengl可以把处理过的数据送回到你的应用程序里(如灰颜色的线所示)



Display List

显示列表是一组已经为后续执行而储存(编译)好的opengl的命令。所有的数据,几何(顶点)和像素数据,都可以被存储到显示列表里。它可能会提高性能,因为命令和数据已经缓存进显示列表内了。当opengl的程序在网络上运行的时候,你可以通过使用显示列表减少数据在网络上的传输。因为显示列表是服务器状态下的一部分,并且驻留在服务器上,客户机每次只需要发送一次命令和数据。(See more details in Display List.) 


Vertex Operation

每一个顶点和法线坐标都在这一步通过GL_MODELVIEW 矩阵转换(从物体(object)坐标系到观察(eye)坐标系)。同时,如果启用了灯光,每个顶点的光照是用已经转换过的顶点和法线数据计算的。光照计算更新顶点的颜色。(See more details in Transformation


Primitive Assembly(图元装配)

在顶点操作之后,图元(点,线和多边形)会被投影矩阵(projection matrix )再次转换,然后通过视景体剪切平面剪切,从观察坐标系到裁剪坐标系。之后,投影除法除以w,视口变换把3d的场景映射到窗口空间坐标系中,最后一步是剔除,如果剔除被启用了的话。

Clip Culling是两个步骤,前后依次完成的,第一个是指图元如果有一部分在视景体之外,则将图元分成更小的图元(只渲染视野内的图元)。Culling,如果面剔除启用的话,一些背面啊之类的就不渲染了。


Pixel Transfer Operation

客户端内存中的像素被读取之后,数据被缩放(scaling),偏移(bias),映射(mapping)和clamping(这个真不会翻译,夹紧?)。这些操作被称为像素转换操作。这些转换过的数据要么被存储在了纹理内存里,要么直接光栅化到片元。


Texture Memory

纹理图像加载进纹理内存,以应用到几何物体上。


Rasterization

光栅化是几何和像素数据到片元的转化。片元是一个矩形阵列包括颜色,深度,线宽,点大小和反锯齿计算 (GL_POINT_SMOOTH, GL_LINE_SMOOTH, GL_POLYGON_SMOOTH)。如果着色模式是 GL_FILL,那么在这一阶段多边形内部的像素会被填充。每个片元都和帧缓存中的一个像素相关。


Fragment Operation

最后一步,将片元转换成帧缓存中的像素。这一阶段的第一步是纹素(texel)生成,一个纹理元素从纹理内存中生成,然后应用到每个片元上。然后应用雾效计算,只后依次有这些片元测试——Scissor TestAlpha TestStencil TestDepth Test. 


FeedBack

Opengl可以通过glGet*() glIsEnabled()命令返回大部分的目前的状态。更进一步,你可以使用glReadPixels()从帧缓存里读取一个长方形的区域的像素数据,并且使用glRenderMode(GL_FEEDBACK)得到全部的以转换的顶点信息。glCopyPixels() 不把像素信息返回到特定的系统内存中,但是把它们拷贝到另一个帧缓存中,比如说,从front缓存到back缓存。

 

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值