opengl 着色器

链接: https://learn.microsoft.com/en-us/windows/win32/opengl/basic-opengl-operation

一、着色器渲染的过程

二、opengl处理数据的工作流 -- opengl处理数据到产生相关在framebuffer图像

处理阶段在基本opengl操作如下:

1、display list :而不是立即拥有通过pipeline的所有的commands的 前行。可以为了后面的处理选择去积累在display中他们中的一些在

2、evaluator: 处理的 evalutor阶段提供一个通过 输入值的多项式估算 高效方式去评估曲面和表面几何

3、pre-vertex operations and primitive assembly: 处理顶点描述的几何基本体点,线段,和多边形,顶点被转换和排列,primitive 被裁剪到 为rasterization光栅化准备好的viewport

4、rasterization 光栅化阶段产生一系列由2d描述点,线,多边形的 frame-buffer地址和相关值。每个产生的fragment被fed到最后阶段,per-fragment操作。

5、per-fragment operations 这个是数据被已像素存储在framebuffer的最后执行的操作

per-fragment operations 包含条件更新到framebuffer基于收入和之前存储的Zvalues(for z-buffering)和blending的存储颜色的输入像素点颜色,如同像素值的masking和其他逻辑操作

数据可以被输入在一个像素表格而不是 顶点。数据在像素表格,如,可能描述一个纹理映射的一个图形,跳过处理的第一阶段以上描述上面和替换,被作为像素处理,在像素操作阶段,跟随像素操作,像素数据

1、存储在纹理内存,为了rasterization阶段的使用

2、rasterized,与fragments的结果合并到framebuffer,仅如由几何数据产生的。

三、处理管路 pipeline

箭头代表 顶点和 与顶点混在一起的其他两个主要数据类型:颜色值 和纹理坐标。

顶点被组成到 primitives 在到 fragments ,最后 到 framebuffer里面的 pixel像素点。

1、Vertices-# inputdata

描述几何对象的轮廓,定义顶点用glvertex*函数, 结合 glbegin glend 去创建 点 线 多边形,也可以使用glrect 描述 矩形。

## edge flag

默认,多边形所有边是边界边,使用gledageflag*去显示设置边表示

##current raster position:

由glrasterpos*定义,当前光栅位置是用于为像素-和图形绘制操作 定义光栅坐标系。

##current normal

与特别向量关联的法向量,定义在3d空间 在一个顶点的一个面定向,影响 光线,这个特殊向量接收的,使用glnormal*定义法向量

## current color

顶点颜色,与光线条件结合,定义最终 点亮的颜色。颜色定义:如果在rgba模式下,用glcolor;在color-index模型下用glindex*定义

## current texture coordinates

由gltexcoord*定义,纹理坐标决定 在纹理映射到关联的对象顶点的位置。

2、Vertices-# Matrix transformations

顶点和法向量,在他们被用于产生framebuffer中的图像之前时 ,被通过 modelview 和project 矩阵转换,。使用

glMatrixMode, glMultMatrix*, glRotate*, glTranslate*, and glScale*

组合实现理想的转换。 直接使用glloadmatrix* 和glloadidentity 指定矩阵。

使用glpushmatrix 和glpopmatrix 保存和恢复当前各自的堆中的 modeview 和projection 矩阵

3、Vertices-#setting lighting and coloring

额外定义颜色和法向量,可以指定理想的光线条件由gllight* 和gllightmodel*定义, 和理想的材质属性由glmaterial*定义。控制相关功能怎么光线计算怎么被实现,包括 glshademodel, glfrontface, glcolormaterial

相关推荐
一枚懒人4 天前
OpenGL 视频渲染导论:从图形管线到视频处理全览
程序员·opengl
郝学胜-神的一滴10 天前
中级OpenGL教程 026:Assimp库从编译到实战全攻略
c++·unity·游戏引擎·图形渲染·unreal engine·opengl
郝学胜_神的一滴15 天前
中级OpenGL教程 024:Assimp模型加载之Mesh解码玄功
计算机图形学·opengl
郝学胜-神的一滴16 天前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl
郝学胜-神的一滴17 天前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
郝学胜_神的一滴19 天前
Horse3D 游戏引擎研发笔记(二):材质系统——从 JSON 配置到 GPU Uniform
游戏开发·opengl
Li.map23 天前
CesiumJS 地图主题系统:用着色器打造实时滤镜
javascript·arcgis·cesium·着色器
郝学胜-神的一滴25 天前
[简化版 GAMES 101] 计算机图形学 17:纹理技术从基础原理到多场景实战应用
c++·unity·游戏引擎·图形渲染·three.js·opengl·unreal
KillJUMP1 个月前
SDF函数
godot·着色器
郝学胜-神的一滴1 个月前
中级OpenGL教程 013:渲染器类架构设计与逐帧渲染流程详解
开发语言·c++·unity·游戏引擎·图形渲染·opengl·unreal