(三)(2)OpenGL 渲染结构与投影

本文介绍了OpenGL的渲染架构,包括Application Code通过OpenGL API与Server交互,以及顶点着色器和片元着色器的角色。重点讲解了投影的两种类型——正投影和透视投影,其中透视投影能体现3D图像的远小近大效果。GLFrustum的setPerspective方法用于设置透视投影,参数包括视场角度、纵横比和裁剪面距离。
摘要由CSDN通过智能技术生成

一、OpenGL 渲染架构图

在这里插入图片描述
说明:

  • Application Code C/C++ OpenGL API: Client 代表客户端
  • Server : 代表 OpenGL 底层
  • Vertex Shader(顶点着色器)、Fragment Shader(片元着色器)可进行自定义编程

数据的传递
顶点着色器的参数传递的三种方式

  • Attributes(属性):顶点数据,投影矩阵,模型矩阵,纹理坐标(图片映射坐标关系)->顶点着色器->桥接给片元着色器
  • Uniforms:统一批次(变换矩阵,颜色值)
  • Texture Data(纹理数据):为了桥接给片元着色器

片元着色器的参数传递的三种方式

  • Attributes 无法直接传入片元着色器,得间接传入片元着色器
  • Uniforms
  • Texture Data(纹理数据)
    在这里插入图片描述

二、投影

正投影

特点:显示2D图像,远近一样大
在这里插入图片描述

透视投影

特点:显示 3D 图像,远小近大
在这里插入图片描述
API 运用:
GLFrustum类通过setPerspective ⽅法为我们构建⼀个平截头体。
CLFrustum::SetPerspective(float fFov , float fAspect ,float fNear ,float fFar);
参数:

  • fFov:垂直方向上的视场角度
  • fAspect:窗口的宽度与高度的纵横比
  • fNear:近裁剪面距离
  • fFar :远裁剪面距离

纵横比 = 宽(w)/高(h)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值