基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(二十五)几何着色器

Vries的教程是我看过的最好的可编程管线OpenGL教程,没有之一其原地址如下,https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/09%20Geometry%20Shader/ 关于几何着色器的详细知识了解请看原教程,本篇旨在对Vires基于visual studio平台的编程思想与c++代码做纯Qt平台的移植,代码移植顺序基本按照原教程顺序,并附加一些学习心得,重在记录自身学习之用

Tip1:Qt的QOpenGLShader这个类可以直接指定Geometry类型着色器,指定完后用QOpenGLShaderProgram类,链接即可。

Tip2: 这节的代码基本与着色器本身有关,所以着色器部分的直接复制Vries的代码即可。

Tip3: 几何着色器在处理简单且重复的形状特别有用!! 比如“我的世界”中的立方体格子。

Tip4: 安利一个免费的在线绘图工具,比Edraw方便,浏览器就能打开使用:https://www.draw.io/

 

程序源代码链接:https://pan.baidu.com/s/1zURVmd9KpY0ZV6KCEK8-MA  提取码:xlgr 

编译环境:Qt5.9.4

编译器:Desktop Qt5.9.4 MSVC2017 64bit

IDE:QtCreator

 

一. 如何在Qt里使用几何着色器

1.1 简介

  几何着色器(Geometry Shader)是个啥子呦,我对他的理解是点的扩张与修改器,可以在顶点着色器(Vertex Shader)将数据传往片段着色器(Fragment Shader)的过程中,拦截数据加以修改,再传往片段着色器。

举一个简单的例子,往顶点着色器传进四个点,如下:

float points[] = {
    -0.5f,  0.5f, // 左上
     0.5f,  0.5f, // 右上
     0.5f, -0.5f, // 右下
    -0.5f, -0.5f  // 左下
};

通过几何着色器将每一个点扩张成两个点,并连成一条直线,如下图:

1.2 使用几何着色器

  QOpenGLShader里包含了Geometry的设置属性,所以直接设置即可。设置完后,将其与顶点着色器,片段着色器一同添加进QOpenGLShaderProgram管理器进行管理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值