《计算机图形学编程(使用OpenGL和C++)》笔记(3)-图形数据和纹理

第四章 管理3D图形数据

缓冲区与顶点属性

  • 每个顶点数据所关联的相关数据:顶点,法线,颜色,uv等

  • 缓冲区类型:VBO、VAO、EBO

    在这里插入图片描述

统一变量uniform

uniform变量是cpu向gpu传递数据的一种方式,支持:

  • 将变量传递到每个着色器中
  • 每个着色器不能修改uniform变量
  • 顶点着色和片段着色中的uniform值相同,片段中不会对uniform进行插值

顶点属性插值

从顶点传递到片段的数据会进行线性插值

模型视图投影变换矩阵

gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertext;

3D立方体程序

  • createShaderProgram
  • readShaderSource
  • checkOpenGLError
  • printProgramLog
  • pringShaderLog
    在这里插入图片描述

实例化

glDrawArraysInstanced

gl_InstanceID

矩阵栈

z冲突

z-fighting /Depth-fighting

产生原因: 深度缓冲区中值的精度有限

解决方法:

  • 使用合适的近远裁
  • 使用polygonoffset进行偏移处理

性能优化

  • 尽量减少动态内存空间分配
  • 尽量减少动态内存空间分配
  • 背面剔除:glCullFace

第五章 纹理贴图

opengl相关函数:

  • glBindTexture
  • glTexParameter
  • 着色器中使用纹理采样器:Sampler2D、Sampler3D等

滤波方式

  • minFilter
  • magFilter

滤波值:

  • GL_LINEAR
  • GL_NEAREST
  • mipmaping 多级渐远

    • GL_NEAREST_MIPMAP_NEAREST:最近插值
    • GL_LINEAR_MIPMAP_NEARST: 线性插值
    • GL_NEARST_MIPMAP_LINEAR: 双线性插值
    • GL_LINEAR_MAPMAP_LINEAR:三线性插值

各向异性

为解决mipmaping使用过程中,由于视角不同而产生的失真模糊,给出的解决方式	

环绕和平铺

  • GL_REPEAT
  • GL_MIRRORED_REPEAT
  • GL_CLAMP_TO_EDGE
  • GL_CLAMP_TO_BORDER

透视矫正

noperspective

第六章 3D模型

1 程序构建模型

1.1 构建球体

  • 在整个球体上,选择一系列圆形“水平切片”的精度
  • 将每个原型切片的圆周若干等分
  • 将顶点切分组成三角形
  • 根据纹理图像的性质选择纹理坐标
  • 对每个顶点计算法线

在这里插入图片描述

1.2 构建环

  • 将一个顶点位于远点的右侧,在XY平面上的圆中,让这个顶点绕Z轴旋转形成“环”
  • 将这个环“向外”移动“内半径”那么长距离。
  • 围绕Y轴旋转最初的这个环,形成用来构成环面的其他环的顶点
    在这里插入图片描述

2 加载外部模型

OBJ格式加载

  • vn-顶点法线
  • f-面
  • v- 几何(顶点)数据
  • vt-纹理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值