美文网首页
OpenGL四-基础变化

OpenGL四-基础变化

作者: AlanGe | 来源:发表于2020-06-28 10:34 被阅读0次

一、抗锯齿

混合的2大功能:颜⾊组合、抗锯⻮

混合处理-抗锯齿

 //开启混合处理
glEnable(GL_BLEND);

//指定混合因⼦
GLBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

//指定混合⽅式
glBlendEquation(GL_FUNC_ADD);

glEnable(GL_POINT_SMOOTH); //对点进行抗锯⻮齿处理
glEnable(GL_LINE_SMOOTH);//对线进行抗锯⻮齿处理
glEnable(GL_POLYGON_SMOOTH);//对多边形进行抗锯⻮齿处理

使⽤混合实现抗锯⻮效果
Demo:10-抗锯齿

二、多重采样

//1.可以调⽤用 glutInitDisplayMode 添加采样缓存区
glutInitDisplayMode(GLUT_MULTISAMPLE);

//2.可以使⽤用glEnable| glDisable组合使⽤用GLUT_MULTISAMPLE 打开| 关闭 多重采样。
glEnable(GLUT_MULTISAMPLE);
glDisable(GLUT_MULTISAMPLE);

三、多重采样、抗锯⻮齿混合综合使⽤

glDisable(GLUT_MULTISAMPLE);
glEnable(GL_POINT_SMOOTH);

 //Draw some smooth point

lDisable(GL_POINT_SMOOTH);
glDisable(GL_LINE_SMOOTH);
glEnable(GLUT_MULTISAMPLE);

//Draw some smooth polygon

使⽤混合和多重采样实现抗锯齿效果
Demo:11-多重采样

四、多重采样 拓展

多重采样缓存区在默认情况下使用片段RGB值,并不包含颜色的alpha成分,我们可以通过调用glEnable来修改这个行为:

  • GL_SAMPLE_ALPHA_TO_COVERAGE 使⽤用alpha值

  • GL_SAMPLE_ALPHA_TO_ON 使⽤用alpha值并设为1,并使⽤用它。

  • GL_SAMPLE_COVERAGE 使⽤用glSampleCoverage 所设置的值。

当启用 GL_SAMPLE_COVERAGE 时,可以使用 glSampleCoverage函数允许指定一个特定的值,它是与⽚段覆盖值进行按位与操作的结果。

五、向量

六、#include”math3d.h”

如何定义三维、四维向量量或三维向量量数组、四维向量量数组?
M3DVector3f:表示一个三维的向量量(x,y,z)
M3DVector4f:表示一个四维的向量量(x,y,z,w)(R,G,B,A)

七、点乘

Demo:12-图形移动(矩阵变换)

八、正投影和透视投影

Demo:13-正交投影

Demo:14-透视投影

九、顶点变换管线

3AE028FC-06FC-4F43-8A6C-06A6357EC651.png

Demo:15-使用矩阵创建几何图形
Demo:16-模型视图投影矩阵

使用矩阵堆栈

//类型
GLMatrixStack::GLMatrixStack(int iStackDepth = 64);

//在堆栈顶部载⼊入⼀一个单元矩阵
void GLMatrixStack::LoadIdentity(void);

//在堆栈顶部载⼊入任何矩阵 

//参数:4*4矩阵
void GLMatrixStack::LoadMatrix(const M3DMatrix44f m);

//矩阵乘以矩阵堆栈顶部矩阵,相乘结果存储到堆栈的顶部
void GLMatrixStack::MultMatrix(const M3DMatrix44f);

//获取矩阵堆栈顶部的值 GetMatrix 函数 

//为了了适应GLShaderMananger的使⽤用,或者获取顶部矩阵的副本
const M3DMatrix44f & GLMatrixStack::GetMatrix(void);
void GLMatrixStack::GetMatrix(M3DMatrix44f mMatrix);

压栈、出栈

//将当前矩阵压⼊入堆栈
void GLMatrixStack::PushMatrix(void);

//将M3DMatrix44f 矩阵对象压⼊入当前矩阵堆栈
void PushMatrix(const M3DMatrix44f mMatrix);

//将GLFame 对象压⼊入矩阵对象
void PushMatrix(GLFame &frame);

// 出栈(出栈指的是移除顶部的矩阵对象) 
void GLMatrixStack::PopMatrix(void);

仿射变换 GLMastrixStack 内建了旋转\平移\缩放

// Rotate 函数angle参数是传递的度数,⽽而不不是弧度
void MatrixStack::Rotate(GLfloat angle,GLfloat x,GLfloat y,GLfloat z);
void MatrixStack::Translate(GLfloat x,GLfloat y,GLfloat z);// 平移
void MatrixStack::Scale(GLfloat x,GLfloat y,GLfloat z);// 缩放

使用照相机 和 角色帧 进行移动

class GLFrame
{
  protected:
    M3DVector3f vOrigin;  // Where am I?
    M3DVector3f vForward; // Where am I going?
    M3DVector3f vUp;      // Which way is up?
}

GLFrame

//将堆栈的顶部压⼊入任何矩阵
void GLMatrixStack::LoadMatrix(GLFrame &frame);

//矩阵乘以矩阵堆栈顶部的矩阵。相乘结果存储在堆栈的顶部
void GLMatrixStack::MultMatrix(GLFrame &frame);

//将当前的矩阵压栈
void GLMatrixStack::PushMatrix(GLFrame &frame);

照相机管理


//GLFrame函数,这个函数⽤用来检索条件适合的照相矩阵
void GetCameraMatrix(M3DMatrix44f m,bool bRotationOnly = flase);

Demo:17-管理管线(网格)
Demo:18-球体世界1

相关文章

  • OpenGL四-基础变化

    一、抗锯齿 混合的2大功能:颜⾊组合、抗锯⻮ 混合处理-抗锯齿 使⽤混合实现抗锯⻮效果Demo:10-抗锯齿 二、...

  • OpenGL 基础变化

    顶点变换管线image.png GLMatrixStack 矩阵堆栈 GLFrame -参考帧 其中存储了1个世...

  • OpenGL基础变换

    OpenGL ⾥的基础变换 OpenGL中涉及的基础变化主要有以下5种: 变换解释视图变换指定观察者位置模型变换在...

  • OPenGL 中的矩阵压栈/出栈

    我们知道OPenGL 中的图形变化是用矩阵来记录保存的.OpenGL 矩阵基础变化 简单来讲,当你做了一些移动或旋...

  • OpenGL 矩阵基础变化

    OpenGL⾥的矩阵/向量 向量:3个值(x、y、z)组合起来表示2个重要的值,⽅向和数量. 矩阵: 在OPenG...

  • 006---OpenGL基础变化

    [toc] OpenGL 矩阵向量 向量 一个顶点同时也是一个向量. 方向 数量 长度或模为1的 当前这个顶点为 ...

  • OpenGL矩阵基础变化理解

    前言 本篇文章的目的主要是为了理解在OpenGL应该如何利用矩阵堆栈对3D图形进行基础变化操作。 三种基础仿射变化...

  • 基础渲染

    opengl opengl渲染管线基础架构 3.1 基础图形管线 3.1.1 客户机-服务器 就opengl而言,...

  • OpenGL ES2.0 c++ 基础教程

    OpenGL ES2.0 c++ 基础 什么是OpenGL ES?OpenGL ES (为OpenGL for ...

  • 九、OpenGL 基础变化与矩阵堆栈

    基础变化 OpenGL中涉及的基础变化主要有以下5种 变换说明视图变换指定观察者位置模型变换在场景中移动物体模型视...

网友评论

      本文标题:OpenGL四-基础变化

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