1 Star 6 Fork 5

武威的涛哥 / QtOpenGL

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Qt5 OpenGL

Qt5写的一些OpenGL小例子集合, 参考LearnOpenGL教程

CI徽章

License Windows MacOS Ubuntu Android IOS
license-badge win-badge macos-badge ubuntu-badge android-badge ios-badge

工程列表

HelloTexture

以QOpenGLWidget为框架,简单的纹理贴图,使用定时器控制纹理旋转。 HelloTexture

HelloCube

立方体贴图的例子,自己用画板画了一个图,然后贴成一个Cube。可以用鼠标控制立方体旋转。

HelloCube

HelloMix

绘制了10个立方体,每个立方体的每个表面使用2张纹理混合贴图。混合比例按数字键1/2进行调节。

HelloMix

QuickOpenGL

qml中添加自定义OpenGL渲染控件。

QuickOpenGL

用的是QQuickWindow的beforeRendering信号。

知道了QQuickFramebufferObject之后,基本上这种方式就被抛弃了。(默认渲染区域是整个window,要自己控制viewport。来自Qml的旋转、平移、缩放也要自己做支持。不方便。)

这里保留项目仅作为观赏,建议参考下面FrameBufferObject。

FrameBufferObject

效果与上一个例子QuickOpenGL 类似,多了全屏放大功能,纹理沿着三个坐标轴旋转的功能。

FrameBufferObject

使用QQuickFramebufferObject 作为OpenGL自绘制控件(相当于QQuickItem了)。

QQuickFramebufferObject是 Qt封装好的,需要理解其使用架构。

这里大概说一下用法:

1. 继承QQuickFramebufferObject实现一个自定义item,并注册到QML中使用。Item在Qml中的旋转、平移、缩放都能支持。
2. 继承QQuickFramebufferObject::Renderer,实现一个自定义Renderer
3. 自定义Renderer内部再封装一个OpenGL相关的渲染类。Renderer是在Scene Graph线程工作,始终拥有OpenGL上下文环境,所以渲染类写在Renderer内部,非常方便。
(Item工作在主线程,Renderer 工作在Scene Graph绘图线程。注意线程交互)

light

Shader光照的例子。  一个立方体的前面, 放一个移动的光源。

light

lightCasters

手电筒光源

lightCasters

mulitLight

镜面反射、漫反射,手电筒的集合 mulitLight

material

材质的使用,边缘部分发光,中间部分不发光

material

DepthTest

利用深度测试,后面的箱子边缘部分用红色绘制出来

DepthTest

SkyBox

天空盒, 可以键盘和鼠标操作

SkyBox

HelloFBO

帧缓冲的使用

反相处理效果如下:

HelloFBO

赞助

如果您觉得这个项目还不错,请打赏一下作者。

联系作者

- -
作者 武威的涛哥
博客 https://jaredtao.github.io/
博客-gitee镜像 https://jaredtao.gitee.io
知乎专栏 https://zhuanlan.zhihu.com/TaoQt
QQ群 734623697(高质量群,大佬多、不灌水)
邮箱 jared2020@163.com
微信 xsd2410421
QQ、TIM 759378563
MIT License Copyright (c) 2018 jared2020@163.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

some Qt OpenGL Demo 展开 收起
C++ 等 6 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/jaredtao_admin/QtOpenGL.git
git@gitee.com:jaredtao_admin/QtOpenGL.git
jaredtao_admin
QtOpenGL
QtOpenGL
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891